gpt4 book ai didi

c# - Linq join iquery,defaultifempty的使用方法

转载 作者:IT王子 更新时间:2023-10-29 04:12:15 24 4
gpt4 key购买 nike

我已经编写了一个 linq 连接查询,如果其中一个为空,我想获取这些值...

代码:

var Details = 

UnitOfWork.FlightDetails
.Query()
.Join
(
PassengersDetails,
x => x.Flightno,
y => y.FlightNo,
(x, y) => new
{
y.PassengerId,
y.classType,
x.Flightno,
x.FlightName,
}
);

我想使用类似...

"Above query".DefaultIfEmpty
(
new
{
y.PassengerId,
y.classType,
string.Empty,
string.Empty
}
);

FlightDetails 是类上的Idatarepository 类型,PassengerDetailsIQueryable 局部变量结果。如何在总体结果中不包含 flightnoflightname 的情况下使用 PassengerId 和 Classtype 获得结果?

最佳答案

你基本上想要做一个左外连接。您当前使用 DefaultIfEmpty 方法的方式是,如果整个列表为空,则您提供一个默认条目。

您应该加入 PassengerDetails 并为每个乘客详细信息列表调用默认值(如果为空)。这相当于左外连接,它有点像这样:

var data = from fd in FlightDetails
join pd in PassengersDetails on fd.Flightno equals pd.FlightNo into joinedT
from pd in joinedT.DefaultIfEmpty()
select new {
nr = fd.Flightno,
name = fd.FlightName,
passengerId = pd == null ? String.Empty : pd.PassengerId,
passengerType = pd == null ? String.Empty : pd.PassengerType
}

关于c# - Linq join iquery,defaultifempty的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19293844/

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