1

我想知道这在 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 列也包含在这个查询中(所以在第三个表上使用连接)。

4

1 回答 1

0

如果一个Request实例可以有一个RequestStatus,一个RequestStatus实例可以有一个StatusType,那么你可以简单地做

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

Include(在 System.Data.Entity 中)还有一个“lambda”(表达式>)重载(不确定它是否适用于 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;
于 2013-02-07T10:27:53.687 回答