0

foreachループの交換

IList<EmployeeSearch> empItems = new List<EmployeeSearch>();
EmployeeSearch empItem = new EmployeeSearch();

foreach (var _emp in mediaResults.results)
{
    empItem.Title = _emp.title;
    empItem.Desc = _emp.description;
    empItems.Add(empItem);
}

次のlinq式でエラーが発生します:

empItems = from _emp in employeeResults.results
           select new EmployeeSearch
           {
               Title = _emp.title,
               Desc = _emp.description                                          
           };

エラー:

エラー 2 型 'System.Collections.Generic.IEnumerable' を 'System.Collections.Generic.IList' に暗黙的に変換できません。明示的な変換が存在します (あなたは

4

2 に答える 2

2

それをリストに変換する必要があります:

(from _emp in employeeResults.results
                             select new EmployeeSearch
                                 {
                                     Title = _emp.title,
                                     Desc = _emp.description                                          
                                 }).ToList();

または... empItems 定義を変更して、var暗黙的な型付けを使用します。

var empItems = from _emp in employeeResults.results
                             select new EmployeeSearch
                                 {
                                     Title = _emp.title,
                                     Desc = _emp.description                                          
                                 };

empItemsIEnumerableオブジェクトのになりEmployeeSearchます。

于 2013-10-19T02:29:31.883 に答える
1

ToListクエリの最後に拡張メソッドの呼び出しを追加します。

empItems = 
    (from _emp in employeeResults.results
     select new EmployeeSearch
     {
         Title = _emp.title,
         Desc = _emp.description                                          
     })
    .ToList();

IEnumerable<T>または、代わりにを使用するようにコードをリファクタリングできる場合は、そのほうがよい可能性があります。

IEnumerable<EmployeeSearch> empItems =
    from _emp in employeeResults.results
    select new EmployeeSearch
    {
        Title = _emp.title,
        Desc = _emp.description                                          
    };

これは通常、結果をループするだけで、結果セットに要素を追加/削除したり、インデックスごとに結果にアクセスしたりする必要がない場合に使用する必要があります。クエリ結果をリストに変換するには、メモリ内に 1 つの連続した配列を割り当てる必要がありますが、これはかなりコストのかかる操作です。

于 2013-10-19T02:30:43.263 に答える