C# 复杂Linq查询
我拥有并包含名为:Flight的对象 它包括:C# 复杂Linq查询,c#,linq,C#,Linq,我拥有并包含名为:Flight的对象 它包括: List<Segement> Segements List<Passenger> Pax List<Award> Awards 列出分段 列名帕克斯 列出奖项 由于每个奖项包含: List<Segment> Segements Passenger Pax 列出分段 乘客座 我想检查分段和Pax的所有组合(取自飞行obj),然后将它们与每个奖励中的现有组合进行比较。 因此,最后我将获
List<Segement> Segements
List<Passenger> Pax
List<Award> Awards
列出分段
列名帕克斯
列出奖项
由于每个奖项包含:
List<Segment> Segements
Passenger Pax
列出分段
乘客座
我想检查分段和Pax的所有组合(取自飞行obj),然后将它们与每个奖励中的现有组合进行比较。
因此,最后我将获得一个奖项列表,其组合不存在于任何奖励对象中
我想知道如何在一个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 } };
显然,我对如何识别个别乘客和区段做了一些假设。另外,如果这个查询在直接查询实体框架数据源时仍然有效,我会非常惊讶。segment和pax list不是分开的吗?你到底在寻找什么?每个乘客在每个奖项中可以有多个赛段。奖励是乘客和他的分段的组合。该航班包含所有乘客和所有可用的分段。我想得到所有可能的赛段和乘客的组合,但赛段(?)和帕克斯没有任何共同之处。它们在不同的列表中。你如何决定哪个区段属于哪个乘客?你能解释一下分段是什么吗?提供一些示例数据,告诉我们你想做什么,这不是100%清楚。每个奖项都包含这一点-一个帕克斯有他的分段