我从客户端获取字符串数组。然后在我的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无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式。“,”
这是因为包含。我该如何解决这个错误?
答案 0 :(得分:5)
不要将ids
转换为连续字符串,而是将它们保存在List<T>/IEnumerable<T>
中,然后对其进行查询:
根据您的评论:
ID被定义为string [] id
您应该将它们转换为IEnumerable<int>
或List<int>
,如:
List<int> integerIds = ids.Select(int.Parse).ToList();
然后在您的查询中:
var query = tableARepository.AsQueryable()
.Where(a=> integerIds.Contains(a.Id))
请确保ids
包含与您的表格Id
您获得异常的原因是由于在您的LINQ查询中调用了ToString
,提供程序正在尝试将其转换为存储数据源语言(可能是SQL)但它无法做到。