我遇到有关LINQ查询的问题。
我有多个输入值存储在List<字符串>变量
我必须形成一个LINQ查询,该查询将有一个where子句,用于检查带有CONTAINS关键字的相应列。我面临的问题是List<字符串>可以包含任意数量的值。
所以我想知道如何形成一个可以从集合对象中读取输入值的查询。并显示结果。
任何建议都将不胜感激。
提前致谢。
答案 0 :(得分: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);
答案 1 :(得分:0)
你的问题不明确。假设你有三个值X,Y和Z.如果你想获取一个列是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%'