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 does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression
我该怎么办?
答案 0 :(得分:14)
使用可以使用这样的东西,
where userIds.Contains(SqlFunctions.StringConvert((double)user.Id))
而不是where userIds.Contains(user.Id.ToString())
这应该有效
答案 1 :(得分:7)
避免拨打ToString
。你想要这样的东西:
userIds.Contains(user.Id)
为了完成这项工作,列表userIds
必须是user.Id
所具有类型的集合。如果你想要整数,那么使用int.Parse
将字符串转换为整数:
int[] userIds = userList.Split(',').Select(s => int.Parse(s)).ToArray();