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));
とすれば、意図通りのことができます。
|
|