LINQ:如何使用多个动态输入值检查包含

LINQ:如何使用多个动态输入值检查包含,linq,linq-to-sql,Linq,Linq To Sql,我面临一个有关LINQ查询的问题 我有多个输入值存储在List变量中 我必须形成一个LINQ查询,它将有一个where子句,用于检查包含关键字的相应列。我面临的问题是列表可以包含任意数量的值 所以我想知道如何形成一个可以从集合对象读取输入值的查询。并显示结果 如有任何建议,将不胜感激 请提前感谢。您的问题不清楚。假设您有三个值X、Y和Z。如果您希望获取列为X、Y或Z的结果,那么habib osu的答案将执行此操作 如果要查找特定列包含X、Y和Z的所有记录,则应使用以下方法 List<str

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

我有多个输入值存储在List变量中

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

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

如有任何建议,将不胜感激


请提前感谢。

您的问题不清楚。假设您有三个值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(); 
Linq扩展方法:

public static bool ContainsAny<T>(this IEnumerable<T> Collection, IEnumerable<T> Values)
{
     return Collection.Any(x=> Values.Contains(x));
}
publicstaticboolcontainsany(此IEnumerable集合,IEnumerable值)
{
返回集合.Any(x=>Values.Contains(x));
}
然后,您可以使用以下命令:

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

bool List2ItemsInList1 = List1.ContainsAny(List2);
List List1=getStringList1();
List List2=getStringList2();
bool List2ItemsInList1=List1.ContainsAny(List2);

我不能正确理解这个问题,你是说像Select*from t where col in('1','2'),或者你可以发布一些你到目前为止尝试过的代码和你想要的吗?你的意思是你需要看看1。一列包含一个值(在本例中,您只需要检查一列还是多列)或2。如果一个表包含一列?您的列表实际上是列(或已知列)中的列名或期望值的列表吗?这是我在Stackoverflow上找到的最好的列表,感谢sgmoore的建议,但它不满足我的要求。恐怕这是一个部分正确的建议。使用此方法,如果我的表“MyTable”在“MyColumn”中的值为“John”、“Joseph”、“Philip”,并且我的列表中有一个值为“ph”的项,则它不会获取任何记录。它在列表项中搜索整个值!你应该得到两张唱片(约瑟夫和菲利普)。您的查询生成了什么sql?它提供空的IEnumerable!。记录集为空。我的意思是生成并发送到sql server的sql命令。如果查看dc.GetCommand(query.CommandText)的值,可以看到这一点
List<string> List1 = getStringList1();
List<string> List2 = getStringList2();

bool List2ItemsInList1 = List1.ContainsAny(List2);