1

私が間違っていなければ、次の方法でデータベースからデータを取得できます。

  1. 最初に IEnumerable を使用します。

    myContext.MyTable.ToList();

  2. IQeryable を使用:

    IQueryable<MyTable> query = myContext.Mytable;

利点の 1 つはIQueryable、サーバーで条件を実行することIEnumerableです。

しかし、私のリポジトリでは、リストを返すときに、次のことを知りたいです:

return query.ToList();

の利点がありIQueryableます。

4

1 に答える 1

3

query.ToList()のように同じですmyContext.MyTable.ToList()。メモリ内のコレクション (データベース テーブル全体) を返しIEnumerable<T>ますIQueryable<T>。追加するすべての LINQ 演算子 (Where句など) は、データベースではなくメモリ内で実行されます。

IEnumerable<T>リポジトリから戻ることを選択した場合はList<T>、リポジトリ メソッドを設計して、これらのメソッド内でフィルターや並べ替えなどを適用できるようにする必要があります。たとえば、フィルターおよび並べ替え式をパラメーターとしてメソッドに渡すか、ロットを作成します。GetOrdersByCustomerId、などのようなさまざまなユースケースに特化したメソッドのGetOrdersByShippingDate。リポジトリメソッドの外部で呼び出した後に実行すると、パフォーマンスが低下します。

于 2013-06-15T12:50:33.533 に答える