我从客户端获取了一系列字符串.然后在我的webapi中,我将其拆分为以下内容
var splitId = string.Join(",", ids);
Run Code Online (Sandbox Code Playgroud)
然后我使用上面的变量我的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)
});
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式.","
这是因为包含.我该如何解决这个错误?
而不是将您转换ids为连接字符串,将它们保存在一个List<T>/IEnumerable<T>然后查询,如:
根据您的评论:
ID被定义为string [] id
您应该将它们转换为IEnumerable<int>或者List<int>像:
List<int> integerIds = ids.Select(int.Parse).ToList();
Run Code Online (Sandbox Code Playgroud)
然后在你的查询中:
var query = tableARepository.AsQueryable()
.Where(a=> integerIds.Contains(a.Id))
Run Code Online (Sandbox Code Playgroud)
只需确保ids包含与表格类型相同的元素Id
您获得异常的原因是由于ToString在您的LINQ查询中调用,提供程序正在尝试在铺设数据源语言(可能是SQL)下转换它,但它不能.