gpt4 book ai didi

c# - LINQ to Entities 无法识别方法 'System.String ToString(Int32)'

转载 作者:太空狗 更新时间:2023-10-29 23:21:50 25 4
gpt4 key购买 nike

您好,我正在使用 linq 查询,该查询抛出错误 LINQ to Entities 无法识别方法“System.String ToString(Int32)”方法,并且此方法无法转换为存储表达式。

        List<string> resultMap = (from item in mapResult
select Convert.ToString(item.ResultDE)).ToList();

错误是在下面的语句中抛出

        List<Result_DE> resultList = (from result in db.Result_DE
where result.IsActive == "1"
&& resultMap.Contains(Convert.ToString(Convert.ToInt32(result.ID)))
select result).ToList();

请告诉我编写此查询的正确方法。

最佳答案

您不能在 LINQ to Entities 语句中使用这些转换函数,它们不能转换为 SQL,您需要在内存中进行转换。但我认为您根本不需要这样做。

如果您只是使用 resultMap 获取您的 resultList,通过 Results 过滤,其中 Id存在于 mapResult 中,执行以下操作:

var resultList = db.Result_DE
.Where(r => r.IsActive == "1" && mapResult.Any(mr => mr.ResultDE == r.ID));
.ToList();

如果 mapResult 是内存中的集合,而不是附加到 db 上下文的 IQueryable,您需要执行以下:

var resultIds = mapResult.Select(mr => mr.ResultDE).ToList();
var resultList = db.Result_DE
.Where(r => r.IsActive == "1" && resultIds.Contains(r.ID));
.ToList();

关于c# - LINQ to Entities 无法识别方法 'System.String ToString(Int32)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228773/

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