给定以下查询:
Select * from myTable where stringField in ('A','B','C')
我将从数据库中提取项目,但尚未决定是否将它们存储在列表、数组或其他集合对象中,但理想情况下需要内置的东西(无自定义类),并且无需手动迭代。
重点是性能和代码可维护性。
在.net中执行此操作的最有效方法是什么?
提前致谢
给定以下查询:
Select * from myTable where stringField in ('A','B','C')
我将从数据库中提取项目,但尚未决定是否将它们存储在列表、数组或其他集合对象中,但理想情况下需要内置的东西(无自定义类),并且无需手动迭代。
重点是性能和代码可维护性。
在.net中执行此操作的最有效方法是什么?
提前致谢
最方便的方法是Enumerable.Contains
(.NET 3.5 以上)。它也应该表现良好,尽管我没有进行基准测试。
例子:
var list = new[] { "A", "B", "C" };
var matches = myTable.Where(o => list.Contains(o.stringField));
var searchItems = new [] {"A", "B", "C"};
var query = from c in myTable
where searchItems.Contains(c.stringField)
select c;
如果它是关于 LINQ 2 SQL 的话。
您也许可以将 Linq Intersect 与自定义平等比较器一起使用