繁体   English   中英

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

[英]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)

动态Linq - String.Split

如何在动态linq查询中使用“包含”或“喜欢”?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM