EF Core(SQL Server)のLINQクエリにContainsを使ってみた結果

EF CoreでSQLのINに相当する検索を行いたかったので、以下のようなLINQクエリを発行してみた。

// 検索対象の部署コード
string[] codes = new string[] { "XXX", "YYY", "ZZZ" };
// LINQクエリ(v.dcodeがcodesの中に含まれる)
var q = ctx.xxxTable.Where(v=>codes.Contains(v.dcode));

EFCoreのロギングレベルをInformationにして、生成されたSQLを確認したところ、

SELECT ・・・
	FROM [xxxTable] AS [x]
	WHERE ([x].[dcode] IN (N'XXX', N'YYY', N'ZZZ'))

と、見事にINを使用したSQLに変換されていた。

結構すごいと思わない?ちなみに、SQLiteでも同じようなクエリが発行されていた。

MS謹製以外のEFドライバはどうなんだろうか・・・

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。 好きなことだけ拾って投稿しているので、内容にはあまり期待しないでねw
カテゴリー: .NET, dotnetcore, Entity Framework, 技術系 パーマリンク

EF Core(SQL Server)のLINQクエリにContainsを使ってみた結果 への1件のコメント

  1. takezou のコメント:

    とりあえず、PomeloのMySQLドライバで試したら、同様に、INに置き換えてくれていました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください