use*_*957 29 c# linq asp.net-mvc-4
我有一个linq连接查询wriiten,我想取值,如果其中一个是空的...
码:
var Details =
UnitOfWork.FlightDetails
.Query()
.Join
(
PassengersDetails,
x => x.Flightno,
y => y.FlightNo,
(x, y) => new
{
y.PassengerId,
y.classType,
x.Flightno,
x.FlightName,
}
);
Run Code Online (Sandbox Code Playgroud)
我想用...
"Above query".DefaultIfEmpty
(
new
{
y.PassengerId,
y.classType,
string.Empty,
string.Empty
}
);
Run Code Online (Sandbox Code Playgroud)
"FlightDetails"是类上的Idatarepository类型,"PassengerDetails"是可查询的局部变量结果.如何获得乘客ID和Classtype的结果,并且整体结果中不包含flightno和flightname.
Kri*_*tof 63
你基本上想要做一个左外连接.您当前使用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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64536 次 |
| 最近记录: |