我拥有并包含名为Flight的对象
它包含:
List<Segement> Segements
List<Passenger> Pax
List<Award> Awards
每个奖项包含:
List<Segment> Segements
Passenger Pax
我想检查Segements和Pax的所有组合(取自Flight obj),然后将它们与每个Award中的现有组合进行比较。 最后,我将获得一份奖项清单,其中任何奖项对象都不存在
我想知道如何在一个linq查询中执行此操作
答案 0 :(得分:3)
这样的东西?
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);
答案 1 :(得分:1)
我认为这个单一查询将产生所需的结果:
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 } };
显然,我对如何识别个别乘客和航段做出了一些假设。此外,如果这个查询直接查询实体框架数据源时,我会非常惊讶。