使用Linq,如何查询匹配以逗号分隔的ID列表的记录?

时间:2012-08-09 19:52:07

标签: c# linq-to-sql

我有一个以逗号分隔的记录ID列表,我从查询字符串中获取。我需要返回所有记录(来自SQL Server数据库)与那些ID。 Linq最好的方法是什么?

我认为它最终将被转换为“WHERE id IN(1,2,3,...)”形式的SQL语句,并且因为该查询包含相同的逗号分隔列表,所以我是从一开始,将它打包成一个int数组然后让Linq再次将它转换回来似乎是一种耻辱。但如果这是唯一的方法,那就好了。

2 个答案:

答案 0 :(得分:6)

正如您所暗示的,最简单的方法是先将其转换为数组。

string csv = "1,2,3";
IEnumerable<int> ids = csv.Split(',').Select( str => int.Parse(str));

var records = db.Records.Where( rec => ids.Contains(rec.id) );

答案 1 :(得分:1)

使用Dynamic Linq避免不必要的转换

.Where("MyColumn.Contains(@0)", myArray)

Dynamic Linq - String.Split

How to use "contains" or "like" in a dynamic linq query?