C# - よく使うクラス - System.Linq

 クラウディア
1. 概要
2. Queryable.Where

1. 概要

 本章の大タイトルは、「C# よく使うクラス」なのですが、実は、これは、あまりよく使ってはいない。  「C# - よく使うクラス - List」で、ソートやら何やらを使用するときに、「using」していないと動かないことがあったな。  「System.Linq」に「System.Linq.Queryable」ちゅうのがあって、これは、参考サイトに。
 IQueryableを実装するデータ構造に対してクエリを実行するための一連の static (Visual Basic のShared) メソッドを提供します。
 ちゅなことが書かれています。  データベースの、「SQL」も扱えるようです。  本ページは、下記のサイトを参考にさせていただきました。
Queryable クラス (System.Linq) 」
「Queryable.Where メソッド (System.Linq) 」
「LINQ:文字列コレクションで複数キーワードのOR検索をするには?[C#、VB]:.NET TIPS

2. Queryable.Where

 ここは、一般論でなく、ひどく限定的な話をします。  「Queryable」だかなんだかを使って、データベースサーバへ接続し、「SQL」を発行することができます。  でまぁ。  「DBEntities」という「DbContext」というクラスから派生したものがおって。

private DBEntities db = new BBEntities();
 と宣言しているとしますわな。  これを。

var result = from a in db.table1 select a;
 と「SELECT」した後で。

result = result.Where(a => a.column1 == value1);
 とか、「Where」で絞り込みをかけることができます。  この絞り込む際に、「SQL」でいうところろの。

SELECT * FROM TABLE1 WHERE COLUMN1 IN (1, 3, 5);
 みたいに書くにはどうしたらいいのか?ちゅうことで、悩んでおりましたが。

int[] myArray = new int[3]{ 1, 3, 5 };
 的な配列を作成して。  (もちろん、配列の中身やサイズは、動的に変えられます)

result = result.Where(item => myArray.Any(key => item.column1 == key));
 とすれば、意図通りのことができます。