![](/img/trans.png)
[英]How to compare a List<long> with a comma-separated ids, using linq to entities
[英]Using Linq, how do I query for records matching a comma-separated list of IDs?
我有一个以逗号分隔的记录ID列表,我从查询字符串中获取。 我需要返回所有记录(来自SQL Server数据库)与那些ID。 Linq最好的办法是什么?
我认为它最终将转换为“WHERE id IN(1,2,3,...)”形式的SQL语句,并且因为该查询包含我开头的相同的逗号分隔列表,将它打包成一个int数组然后让Linq再次将它转换回来似乎是一种耻辱。 但如果这是唯一的方法,那就好了。
正如您所暗示的那样,最简单的方法是首先将其转换为数组。
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) );
使用Dynamic Linq可避免不必要的转换
.Where("MyColumn.Contains(@0)", myArray)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.