我从我的客户那里得到了字符串数组。然后在我的 webapi 中,我将其拆分如下
var splitId = string.Join(",", ids);
然后我使用上面的变量进行 Linq 查询
这是我的 Linq 查询
var query = tableARepository.AsQueryable()
.Where(a=> splitId.Contains(a.Id.ToString()))
.Select(a => new {
Id = a.Id
, Name = a.Name
, FkId = tableBRepository.AsQueryable().Min(b => b.fkid=a.id)
});
我得到这个异常:
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.","
这是因为包含。我该如何解决这个错误?
最佳答案
而不是转换您的 ids
连接字符串,将它们保存在 List<T>/IEnumerable<T>
中然后像这样查询:
根据您的评论:
Ids are defined as string[] ids
您应该将它们转换为 IEnumerable<int>
或 List<int>
喜欢:
List<int> integerIds = ids.Select(int.Parse).ToList();
然后在您的查询中:
var query = tableARepository.AsQueryable()
.Where(a=> integerIds.Contains(a.Id))
只需确保 ids
包含与您的表类型相同的元素 Id
您收到异常的原因是调用了 ToString
在您的 LINQ 查询中,提供程序试图将其转换为放置数据源语言(可能是 SQL),但它不能。
关于c# - 尝试在 Linq 中使用包含时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413117/