LINQを使って文字列のコレクションを処理するとき、AND検索をしたいことがあるだろう。あらかじめ条件が決まっているならば、複雑な条件式であってもそのままWhereメソッド(System.Linq名前空間のEnumerableクラスに定義された拡張メソッド)に渡すラムダ式に記述すれば済む*1。しかし、例えばエンドユーザーからの入力を基にして検索を実行するような場合には、ANDでつなぐ条件の数が動的に変化する。そのような場合はどうしたらよいだろうか? 本稿ではその方法を説明する。 AND/ORが入り混じった複雑な条件の場合 あらかじめお断りしておくが、AND/ORやかっこが入り混じった本当に複雑な条件の場合には、ラムダ式を動的に組み立てて式ツリーを生成することになる。そのような複雑な検索条件では、構文解析が必須であろう。構文解析を行うなら、そのついでに式ツリーを生成するのはそれほど困難なこと
![LINQ:文字列コレクションで複数キーワードのAND検索をするには?[C#、VB]](https://cdn-ak-scissors.b.st-hatena.com/image/square/1299170f368f5b6078b1a9ca2a7cc9a03a18a207/height=288;version=1;width=512/https%3A%2F%2Fimage.itmedia.co.jp%2Fait%2Farticles%2F1412%2F09%2Fl_dt-01.gif)