3

我有一个从查询字符串中获得的以逗号分隔的记录 ID 列表。我需要使用这些 ID 返回所有记录(来自 SQL Server 数据库)。在 Linq 中做到这一点的最佳方法是什么?

我认为它最终将被转换为“WHERE id IN (1,2,3,...)”形式的 SQL 语句,并且由于该查询包含与我开始时相同的逗号分隔列表,将其解压缩为 int 数组然后让 Linq 再次将其转换回来似乎很可惜。但如果这是唯一的方法,那很好。

4

2 回答 2

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) );
于 2012-08-09T20:05:40.360 回答
1

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

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

动态 Linq - String.Split

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

于 2012-08-09T20:10:39.333 回答