gpt4 book ai didi

c# - Linq:在已经连接的表上包含一个连接

转载 作者:行者123 更新时间:2023-11-30 23:22:57 25 4
gpt4 key购买 nike

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

最佳答案

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

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

Include 也有一个“lambda”(表达式>)重载(在 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;

关于c# - Linq:在已经连接的表上包含一个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14748559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com