0

LINQ クエリに関する問題に直面しています。

List< string > 変数に格納されている複数の入力値があります。

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

コレクションオブジェクトから入力値を読み取ることができるクエリを作成する方法を知りたいです。結果を表示します。

任意の提案をいただければ幸いです。

前もって感謝します。

4

2 に答える 2

2

Linq 拡張メソッド:

public static bool ContainsAny<T>(this IEnumerable<T> Collection, IEnumerable<T> Values)
{
     return Collection.Any(x=> Values.Contains(x));
}

次に、次のように使用できます。

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

bool List2ItemsInList1 = List1.ContainsAny(List2);
于 2014-04-17T04:22:28.533 に答える
0

あなたの質問は明確ではありません。X、Y、Zの3つの値があるとします。列が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(); 

これにより、次のような 1 つの SQL クエリが生成されます。

select * from Table where Column like '%X%' and column like '%Y%' and column like '%Z%'     
于 2012-04-30T11:45:32.430 に答える