[解決済み】LinqでIQueryableを使用する。
2022-04-02 22:02:11
質問
はどのように使うのですか?
IQueryable
LINQの文脈では?
拡張メソッドの開発などにも使われるのでしょうか?
どのように解決するのですか?
マーク・グラベルの回答 は非常に完成度が高いのですが、ユーザーの視点からも何か補足しておこうと思いまして...。
ユーザーの立場からすると、大きな違いは
IQueryable<T>
(正しくサポートしているプロバイダーで)多くのリソースを節約することができます。
たとえば、リモートのデータベースに対して作業を行う場合、多くの ORM システムでは、テーブルからデータを取得する際に 2 種類の方法があります。
IEnumerable<T>
を返すものと
IQueryable<T>
. 例えば、Products テーブルがあり、原価が >$25 の商品をすべて取得したいとします。
そうすると
IEnumerable<Product> products = myORM.GetProducts();
var productsOver25 = products.Where(p => p.Cost >= 25.00);
ここで起こることは、データベースがすべての商品をロードし、それをプログラムへ引き渡すことです。 そして、プログラムがそのデータをフィルタリングします。 要するに、データベースは
SELECT * FROM Products
そして、すべての製品をあなたに返します。
正しい
IQueryable<T>
一方、プロバイダーは、できる。
IQueryable<Product> products = myORM.GetQueryableProducts();
var productsOver25 = products.Where(p => p.Cost >= 25.00);
コードの見た目は同じですが、ここで違うのは、実行されるSQLが
SELECT * FROM Products WHERE Cost >= 25
.
開発者の立場からすると、これは同じに見えます。 しかし、パフォーマンスの観点からは、ネットワーク全体で20,000のレコードではなく、2つのレコードしか返さないかもしれません...。
関連
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] IEnumerable<T> と IQueryable<T> を比較する。
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] IEnumerable<T> / IQueryable<T>の動的なLINQ OrderBy
-
[解決済み] LINQを使用してList<string>内のすべての文字列を結合する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み] 2つのリストを結合する