0

我面临一个关于 LINQ 查询的问题。

我有多个输入值,它们存储在 List< 字符串 > 变量中。

我必须形成一个 LINQ 查询,它有一个 where 子句,它使用 CONTAINS 关键字检查相应的列。我面临的问题是 List< string > 可以包含任意数量的值。

所以我想知道如何形成一个可以从集合对象读取输入值的查询。并显示结果。

任何建议将不胜感激。

提前致谢。

4

2 回答 2

2

Linq extension method:

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

Then you can use like:

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

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

你的问题不清楚。假设您有三个值 X、Y 和 Z。如果您想获取 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(); 

这将产生一个类似于以下的 sql 查询

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