2012-04-30 13 views
0

LINQクエリに関する問題が発生しています。LINQ:複数の動的入力値でCONTAINSを確認する方法

私はリスト< string>変数に格納されている複数の入力値を持っています。

それぞれの列をCONTAINSキーワードでチェックするwhere句を持つLINQクエリを作成する必要があります。私が直面している問題は、List < string>に任意の数の値を含めることができるということです。

私はどのようにコレクションオブジェクトから入力値を読み取ることができるクエリを形成することができます知りたいです。結果を表示します。

ご迷惑をおかけして申し訳ございません。

ありがとうございます。

+0

私は質問を正しく理解することができません。Select * from tのような意味ですか?( '1'、 '2');あなたがこれまでに試したこととあなたが望むものを投稿してください。 – Habib

+0

1.カラムに値が含まれているかどうかを確認する必要がありますか(この場合は、または2.テーブルに列が含まれている場合リストは、列(または既知の列の集合)の列名または期待値のリストとなりますか? –

答えて

0

質問が不明です。 X、Y、Zの3つの値があるとします。ColumnがX、Y、Zのいずれかの結果をフェッチする場合は、habib-osuの答えがこれを行います。

あなたが特定の列がX、YおよびZが含まれているすべてのレコードを探しているなら、次のことが

List<string> options = new List<string>(); 
options.Add("X"); 
options.Add("Y"); 
options.Add("Z"); 

var query = (from r in dc.Table select r); 
foreach(var option in options) 
    query = (from r in query where r.Column.Contains(option) select r); 

var list = query.ToList(); 

を動作するはずです。これは、次の

select * from Table where Column like '%X%' and column like '%Y%' and column like '%Z%'  
+0

提案sgmooreに感謝しますが、それは私の要件を満たしていません。私は恐れているが、これは部分的に正しい提案であるようだ。 "MyColumn"の値が "John"、 "Joseph"、 "Philip"、およびMy List の項目に "ph"という値がある場合は、このメソッドを使用してレコードを取得できません。リストのアイテム全体を検索します! – shakti

+0

JosephとPhilipという2つのレコードが返されます。クエリによって生成されるSQLは何ですか? – sgmoore

+0

空のIEnumerable <>!を返します。レコードセットは空です。 – shakti

2

に似て1つのSQLクエリを生成しますLinq拡張方式:

List<string> List1 = getStringList1(); 
List<string> List2 = getStringList2(); 

bool List2ItemsInList1 = List1.ContainsAny(List2); 
関連する問題