[解決済み] IQueryableとIEnumerableの違いは何ですか[重複]。
質問
違いがわからず戸惑っています。 .Netのかなり新しいユーザーである私は、以下のようなクエリを実行できることを知っています。
IEnumerables
Linq 拡張を使用しています。 では、次のものは何でしょうか。
IQueryable
とはどのような違いがあるのでしょうか?
こちらもご覧ください IQueryable[T]とIEnumerable[T]の違いは何ですか? は、この質問と重複しています。
どのように解決するのですか?
IEnumerable<T>
の前方のみのカーソルを表します。
T
. .NET 3.5では、拡張メソッドに
LINQ standard query operators
のように
Where
と
First
で、述語を必要とする演算子や無名関数は
Func<T>
.
IQueryable<T>
は同じLINQ標準のクエリ演算子を実装していますが、その代わりに
Expression<Func<T>>
を述語と無名関数に使うことができます。
Expression<T>
はコンパイルされた式木で、メソッドの分解されたバージョン (必要であれば "half-compiled") で、クエリブルのプロバイダによって解析され、それに応じて使用されることが可能です。
例えば
IEnumerable<Person> people = GetEnumerablePeople();
Person person = people.Where(x => x.Age > 18).FirstOrDefault();
IQueryable<Person> people = GetQueryablePeople();
Person person = people.Where(x => x.Age > 18).FirstOrDefault();
最初のブロックでは
x => x.Age > 18
は無名メソッド(
Func<Person, bool>
) であり、他のメソッドと同様に実行することができます。
Enumerable.Where
は、各人に対して一度ずつメソッドを実行します。
yield
メソッドが返した値を
true
.
2つ目のブロックでは
x => x.Age > 18
は式木(
Expression<Func<Person, bool>>
) であり、これは "is 'Age' property > 18" と考えることができます。
これにより、LINQ-to-SQLのようなものが存在し、式木をパースして同等のSQLに変換することができるからです。また、プロバイダは
IQueryable
が列挙され(それは
IEnumerable<T>
また、複数のクエリ演算子を組み合わせることができます (上の例では
Where
と
FirstOrDefault
を使うなど)、基礎となるデータソースに対してクエリ全体を実行する方法をよりスマートに選択できるようになります。
SELECT TOP 1
を SQL で使用する場合)。
ご覧ください。
関連
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] IEnumerable<T> と IQueryable<T> を比較する。
-
[解決済み] IEnumerable<T> / IQueryable<T>の動的なLINQ OrderBy
-
[解決済み] LINQ Orderby Descending Query(LINQ降順クエリ
-
[解決済み] LINQ .Any VS .Exists - 違いは何ですか?
-
[解決済み】LINQ グループバイをディクショナリーオブジェクトに入れる
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
-
[解決済み] 指定された型メンバー 'Date' は LINQ to Entities でサポートされていません。イニシャライザ、エンティティ・メンバ、およびエンティティ・ナビゲーション・プロパティのみです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] C# LINQ リスト内の重複を検索する
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み】Entity Framework。このコマンドに関連するオープンなDataReaderがすでに存在します。
-
[解決済み] LINQ-to-SQLとストアドプロシージャの比較?[クローズド]
-
[解決済み] LINQを使用してデータをPivotすることは可能ですか?
-
[解決済み] Linqのgroup byのカウントを持つ
-
[解決済み] IQueryableとIEnumerableの違いは何ですか[重複]。
-
[解決済み] 指定された型メンバー 'Date' は LINQ to Entities でサポートされていません。イニシャライザ、エンティティ・メンバ、およびエンティティ・ナビゲーション・プロパティのみです。
-
[解決済み] LINQ: 区分された値
-
[解決済み] LINQ OrderByとThenByの比較