4

私は次のようなLINQクエリを書いています:

var test = from o in dbcontext.Orders.AsEnumerable()
        where o.ID==1
        select new Order
        { 
             Name = GetName(o.ID)
        };

LINQクエリ内で外部関数を呼び出すためにAsEnumerable()、クエリ内で使用しています。

ToList()通常、クエリは、などの列挙関数が呼び出されるまで実行されないことを理解しています。しかし、ここではクエリ内の列挙を呼び出しています。

このように使用するのが悪い習慣であると考えられるかどうか誰かに教えてもらえますAsEnumerable()か?クエリを作成したToList() に呼び出す場合と比較して、パフォーマンスが低下しますか?

4

1 に答える 1

5

やる

var ids = from o in dbcontext.Orders
          where o.ID==1
          select new { ID = o.ID }; 

var names = from i in ids.AsEnumerable()
            select new Order { Name = GetName(i.ID) };

つまり、データベースで可能な限り多くのクエリを実行してから、C#でのみIDから名前への変換を実行します。

于 2012-08-15T10:55:58.470 に答える