Linq:在所有已联接的表上包含一个联接

  • 本文关键字:包含一 Linq c# mysql linq
  • 更新时间 :
  • 英文 :


我想知道这在Linq中是否可行:我有三张桌子:

Request
--id
--Adress
--Description
Nav.Properties:
-- RequestStatus
RequestStatus
--RequestId
--PubDate
--StatusTypeId
Nav.Properties:
-- Request
-- StatusType
StatusType
--Id
--StatusTypeDescription
Nav.Properties
-- RequestStatus

在Linq中,我可以通过以下方式将前两个表连接在一起:

var RequestWithStatus = dbContext.Requests.Include("RequestStatus").ToList<fullRequest>();

但是。。。我想要的是StatusTypeDescription列也包含在这个查询中(所以在第三个表上使用联接)。

如果一个请求实例可以有一个RequestStatus,而一个RequestState实例可以只有一个StatusType,那么您可以简单地执行

var requestList = dbContext.Requests.Include("RequestStatus.StatusType").ToList();

Include(在System.Data.Entity中)也有一个"lambda"(Expression>)重载(不确定它是否能与mysql一起工作)

var requestList = dbContext.Requests.Include(m => m.RequestStatus.StatusType).ToList();

您的所有数据都将显示在列表中(急切加载)。

然后您可以访问描述

var firstRequest = requestList.First();
var requestDescription = firstRequest.Description;
var statusTypeDescription = firstRequest.RequestStatus.StatusType.Description;

或更安全的

var statusTypeDescription = firstRequest.RequestStatus != null && firstRequest.RequestStatus.StatusType != null 
          ? firstRequest.RequestStatus.StatusType.Description
          : string.Empty;

相关内容

  • 没有找到相关文章

最新更新