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

Gar*_*ill 3 c# linq-to-sql

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

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

Jam*_*mes 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) );
Run Code Online (Sandbox Code Playgroud)