我想知道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列(因此在第三个表上使用连接)。
答案 0 :(得分:0)
如果Request实例可以有一个RequestStatus,而RequestStatus实例可以有一个StatusType,那么你可以简单地执行
var requestList = dbContext.Requests.Include("RequestStatus.StatusType").ToList();
还包含Include的“lambda”(Expression&gt;)重载(在System.Data.Entity中)(不确定它是否适用于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;