我面临一个关于 LINQ 查询的问题。
我有多个输入值,它们存储在 List< 字符串 > 变量中。
我必须形成一个 LINQ 查询,它有一个 where 子句,它使用 CONTAINS 关键字检查相应的列。我面临的问题是 List< string > 可以包含任意数量的值。
所以我想知道如何形成一个可以从集合对象读取输入值的查询。并显示结果。
任何建议将不胜感激。
提前致谢。
我面临一个关于 LINQ 查询的问题。
我有多个输入值,它们存储在 List< 字符串 > 变量中。
我必须形成一个 LINQ 查询,它有一个 where 子句,它使用 CONTAINS 关键字检查相应的列。我面临的问题是 List< string > 可以包含任意数量的值。
所以我想知道如何形成一个可以从集合对象读取输入值的查询。并显示结果。
任何建议将不胜感激。
提前致谢。
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);
你的问题不清楚。假设您有三个值 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%'