[解決済み] LINQ拡張メソッドによる複数のWHERE句の作成
質問
以下のようなLINQクエリを持っています。
DateTime today = DateTime.UtcNow;
var results = from order in context.Orders
where ((order.OrderDate <= today) && (today <= order.OrderDate))
select order;
私はLINQを学び、理解しようとしています。場合によっては、私は2つの追加のWHERE句を追加する必要があります。これを行うための努力として、私は使用しています。
if (useAdditionalClauses)
{
results = results.Where(o => o.OrderStatus == OrderStatus.Open) // Now I'm stuck.
}
ご覧の通り、WHERE句を追加する方法は分かっています。しかし、複数の句を追加するにはどうしたらよいのでしょうか?例えば、私は
WHERE o.OrderStatus == OrderStatus.Open AND o.CustomerID == customerID
を前のクエリに追加します。拡張メソッドを使用してこれを行うにはどうすればよいですか?
ありがとうございます。
どのように解決するのですか?
2つの方法があります。
results = results.Where(o => (o.OrderStatus == OrderStatus.Open) &&
(o.CustomerID == customerID));
または
results = results.Where(o => (o.OrderStatus == OrderStatus.Open))
.Where(o => (o.CustomerID == customerID));
私は通常、後者を好みます。 しかし、SQLサーバーをプロファイリングしてクエリの実行を確認し、データに対してどちらがより良いパフォーマンスを示すか(もし違いがあれば)確認する価値はあります。
を連鎖させることについてのメモです。
.Where()
メソッドを連結することについての注意点です。 LINQのメソッドはすべて連鎖させることができます。 のようなメソッドは
.Where()
のようなメソッドは、実際にはデータベースに対して実行されません(まだ)。 それらは
実行を延期する
のように)実際の結果が計算されるまで、実行を延期します。
.Count()
または
.ToList()
). そのため、複数のメソッドを連鎖させると(より多くの呼び出しを
.Where()
への呼び出しが増える)、もしかしたら
.OrderBy()
など) を構築し、いわゆる
表現ツリー
. このツリー全体が、評価するときにデータ ソースに対して実行されるものです。
関連
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] LINQとLambdaでJoin/Whereを実現する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?