复杂Linq查询
本文关键字:查询 Linq 复杂 | 更新日期: 2023-09-27 18:08:58
我有一个包含对象命名为:Flight
包含:
List<Segement> Segements
List<Passenger> Pax
List<Award> Awards
每个奖项包含:
List<Segment> Segements
Passenger Pax
我想检查段和Pax的所有组合(从飞行对象中获取),然后将它们与每个奖项中的现有组合进行比较。因此,最后我将得到一个列表,其中的奖项组合不存在于任何奖项对象
我想知道如何在一个linq查询中做到这一点
像这样?
var flight = new Flight();
var x = from s in flight.Segements
from p in flight.Pax
select new
{
Pax = p ,
Segemnt = s
};
var y = from a in flight.Awards
from s in a.Segements
select new
{
Pax = a.Pax,
Segemnt = s
};
var result = x.Except(y);
我认为这个查询将产生期望的结果:
var query =
from f in flights
from p in f.Pax
from s in f.Segements
from a in f.Awards
where !((a.Pax.Name == p.Name) && (a.Segements.Select(_ => _.Id).Contains(s.Id)))
select new Award { Pax = p, Segements = new[] { s } };
显然,我对如何识别个别乘客和区段做了一些假设。此外,当直接查询实体框架数据源时,如果此查询按原样工作,我会感到非常惊讶。