3
4

3 に答える 3

4

クエリはIEnumerableを返しますが、メソッドは を返す必要がありますList<B>。拡張メソッド
を使用して、クエリの結果をリストに変換できます。ToList()

public class A
{
   public List<B> Load(Collection coll)
   {
       List<B> list = (from x in coll select new B {Prop1 = x.title, Prop2 = x.dept}).ToList();
       return list;
   }
}

リストの型は、コンパイラによって自動的に推測されます。そうでない場合は、 に電話する必要がありますToList<B>()

于 2012-12-02T11:06:57.083 に答える
3

列挙型をリストに変換する必要があります。それを行うための拡張メソッドがあります。たとえば、次のようにしてください。

    var result = from x in coll select new B {Prop1 = x.title, Prop2 = x.dept};
    return result.ToList();
于 2012-12-02T11:08:15.487 に答える
2

より一般的なタイプのオブジェクトをより具体的なタイプに変換することはできません。

B の List と B の IEnumerable があるとします。

List<B> BList = ...
IEnumerable<B> BQuery = ...

あなたはこれを行うことができます:

IEnumerable<B> collection = BList;

しかし、これを行うことはできません:

List<B> collection = BQuery;

コレクションは IEnumerable よりも具体的なオブジェクトであるためです。

したがって、あなたのケースでは拡張メソッド ToList() を使用する必要があります。

(from x in coll
select new B 
  {
    Prop1 = x.title, 
    Prop2 = x.dept
  }
).ToList()
于 2012-12-02T11:30:20.490 に答える