首页 > 解决方案 > Inner Join LINQ 不做新模型

问题描述

我正在使用 LINQ,我需要进行内部连接。这是我的代码:

var requests = 
    (from request in db.Request
    join estatus in db.typesStatus
    on request.fkStatus equals estatus.idStatus
    where request.fkStatus == status && DbFunctions.TruncateTime(request.dateRquest) == DbFunctions.TruncateTime(fecha)
    select new { request = request, estatus = estatus.status, nombre = (String)UserAccessRequest.checkUserAsync(request.wiwMakeRequest, "name").Result })
    .ToList(); 

我试图在我的 LINQ 查询中调用一个方法。这个调用一个 API 并返回一个字符串,但我收到了下一个错误:

LINQ to Entities 无法识别方法 'System.Threading.Tasks.Task`1[System.Object] checkUserAsync(System.String, System.String)' 方法,并且此方法无法转换为存储表达式。

有什么方法可以在不为此 LINQ 查询的结果建立模型的情况下进行 LINQ 查询?

标签: c#linq

解决方案


只需在 LINQ 查询将数据加载到内存后调用您的方法:

var requests = 
    (from request in db.Request
    join estatus in db.typesStatus
    on request.fkStatus equals estatus.idStatus
    where request.fkStatus == status && DbFunctions.TruncateTime(request.dateRquest) == DbFunctions.TruncateTime(fecha)
    select new { request = request, estatus = estatus.status })
    .ToList()
    .Select(i => new { i.request, i.estatus, nombre = (String)UserAccessRequest.checkUserAsync(i.request.wiwMakeRequest, "name").Result })
    .ToList()

推荐阅读