首页 > 解决方案 > LINQ中字符串字段的IN sql运算符的替代方法是什么?

问题描述

请在下面找到我想要实现的示例。

List<string> list = new List<string>() { "Test", "Test1", "Test2","Test","Test1" };

SQL = select * from table_name
     where column_name IN ("Test","Test1");<br/>
output = { "Test","Test1","Test","Test1"}

LINQ= from x in list where list.Contains("Test","Test1") select x

output = { "Test", "Test1", "Test2","Test","Test1" }

包含 不进行完全匹配。
我们如何在 LINQ 中使用字符串列表获得与 SQL IN 运算符相同的输出?

谢谢

标签: c#sqllinq

解决方案


您使用 Contains 不正确(实际上,您的示例代码无法编译)。相反,声明一个您希望匹配的集合并在该集合上使用 Contains ,如下所示:

List<string> list = new List<string>() { "Test", "Test1", "Test2","Test","Test1" };

var match = new HashSet<string>() { "Test", "Test1" };

var result = from x in list where match.Contains(x) select x;

结果:

Test
Test1
Test
Test1

推荐阅读