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

use*_*948 5 .net c# linq entity-framework compiler-errors

您好我正在使用linq查询抛出错误LINQ到实体无法识别方法'System.String ToString(Int32)'方法,并且此方法无法转换为商店表达式.

        List<string> resultMap = (from item in mapResult
                                  select Convert.ToString(item.ResultDE)).ToList();
Run Code Online (Sandbox Code Playgroud)

错误是抛出以下声明

        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();
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*lex 2

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

如果您只是使用 来resultMap获取您的resultList,并按 中存在的 进行过滤ResultsIdmapResult执行以下操作:

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

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

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