LINQ to Entities不识别方法'System.String ToString()'方法。

8
string[] userIds = userList.Split(','); // is an array of integers
IList<User> users = (from user in this.repository.Users
                     where userIds.Contains(user.Id.ToString())
                     select user).ToList();

上述查询结果如下:

System.NotSupportedException: LINQ to Entities 不认识 'System.String ToString()' 方法,因此无法将此方法转换为存储表达式

我该怎么办?

2个回答

14

你可以像这样使用:

where userIds.Contains(SqlFunctions.StringConvert((double)user.Id))

不是使用 where userIds.Contains(user.Id.ToString()),而是使用以下方法:

这样应该可以工作:


7
避免调用 ToString。你需要像这样做:
userIds.Contains(user.Id)

为了使此方法有效,列表 userIds 必须是与 user.Id 相同类型的集合。如果需要用整数,则使用 int.Parse 将字符串转换为整数:
int[] userIds = userList.Split(',').Select(s => int.Parse(s)).ToArray();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接