SQL IN运算符的等价物?

时间:2012-06-13 09:14:39

标签: .net

给出以下查询:

Select * from myTable where stringField in ('A','B','C')

我将从数据库中提取项目,还没有决定是否将它们存储在列表,数组或其他集合对象中,但理想情况下需要内置的内容(没有自定义类),没有手动迭代。

重点是性能和代码可维护性。

在.net中执行此操作的最有效方法是什么?

提前致谢

3 个答案:

答案 0 :(得分:2)

最方便的方法是Enumerable.Contains(.NET 3.5以上)。它也应该表现良好,虽然我没有基准。

示例:

var list = new[] { "A", "B", "C" };
var matches = myTable.Where(o => list.Contains(o.stringField));

答案 1 :(得分:1)

var searchItems = new [] {"A", "B", "C"};

var query = from c in myTable
            where searchItems.Contains(c.stringField)
            select c;

这是关于LINQ 2 SQL。

答案 2 :(得分:0)

您可以将Linq Intersect与自定义Equality Comparer一起使用

http://msdn.microsoft.com/en-us/library/bb302032