0

EntityFrameworkを使用して従業員を読​​み込もうとしています。このメソッドは、従業員リストを返すことになっています。

このエラーが発生しています:

Cannot implicit convert....<Class names and methods>.... An Explicit conversion exists. 

問題はキャスティングに関係していると思います。

以下のコードを確認してください。

    public List<Employee> LoadEmployees()
     {
         try
         {
             EMployeeDB1Entities EE = new EMployeeDB1Entities();
             var Employees = EE.Employees.Where(p => p.Name.StartsWith("T"));
             return Employees;

         }
         catch
         {
             return null;
         }

     }
4

2 に答える 2

1
var Employees = EE.Employees.Where(p => p.Name.StartsWith("T")).ToList();
于 2012-07-13T12:47:35.327 に答える
1

コードを次のように更新します。

return Employees.ToList();

ToList()また、これは実際にデータベース クエリをトリガーするメソッドであることに注意してください。

EE.Employees.Where(....)データベースにクエリを実行しません。DB は、結果Where()が enumeratedのときに照会されます。これが実行され.ToList()ます。


おかげでうまくいきました...もう1つの問題、上記のリストをグリッドにバインドしたい場合、どうすればバインドできますか?

WPF または Silverlight を使用していると仮定すると、クエリの結果をデータグリッドにバインドするには、タイプ のパブリック プロパティを公開できますObservableCollectionIEnumerable<T>このコレクションは、コンストラクターとしてオブジェクトを受け入れます。あなたは書ける:

var myCollection = new ObservableCollection<Employee>(this.LoadEmployees());

次に、データグリッドのItemSourceプロパティをコレクションにバインドします。

バインディングの使用にさらに問題がある場合は、別の質問をすることをお勧めします。これは、主題がまったく異なるためです。

于 2012-07-13T12:50:18.833 に答える