【问题标题】:EF Map The Latest Object In A List Of ObjectsEF 映射对象列表中的最新对象
【发布时间】:2017-01-31 16:20:12
【问题描述】:

我正在尝试这样做Linq 查询:

dataContext.Request.Where(x => x.LatestResponse.IsReviewRequired);

问题在于LatestResponseID 实际上不是Request 表上的列。

要获得LatestResponse,我必须这样做SQL

  SELECT ....
  FROM [doe].[Request] Req
      LEFT JOIN (
          SELECT MAX(ResponseID)
          FROM [doe].[Response]
          GROUP BY [RequestID]) AS Resp ON Req.[RequestID] = Resp.[RequestID]
      LEFT JOIN [doe].[Response] LatestResp ON Resp.[ResponseID] = LatestResp.[ResponseID]

我可以map 这个吗?如果有,怎么做?

【问题讨论】:

    标签: c# sql entity-framework linq mapping


    【解决方案1】:

    你可以做这样的事情(如果你希望加入的双方都回来):

    var results = dataContext.Requests.Select(request => new
            {
                Request = request,
                LatestResponse = request .Responses.FirstOrDefault(response => response .RequestID == request.Responses.Max(response2 => response2.RequestID))
            });
    

    此外,如果您只是想取回请求对象,但要通过最新响应的属性对其进行过滤,则下面是一个示例:

    var results = dataContext.Requests.Select(request => new
            {
                Request = request,
                LatestResponse = request.Responses.FirstOrDefault(response => response.RequestID == request.Responses.Max(response2 => response2.RequestID))
            }).Where(request => request.LatestResponse.MyProperty == "Value").Select(request => request.Request); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2016-03-06
      • 2018-12-02
      • 1970-01-01
      • 2013-03-11
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多