gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:35 26 4
gpt4 key购买 nike

我从我的客户那里得到了字符串数组。然后在我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com