在Linq中尝试使用包含时出错

Jam*_*mes 1 c# linq

我从客户端获取了一系列字符串.然后在我的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()'方法,并且此方法无法转换为存储表达式.","

这是因为包含.我该如何解决这个错误?

Hab*_*bib 5

而不是将您转换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)下转换它,但它不能.