通过linq从第三级列表中获取项目



有人知道我是如何从下面的查询中获得和IEnumerable的吗?

var neueLieferanten = Bestellpositionen.Where(x => x.SelectedArtikel is not null)
.Select(x => x.SelectedArtikel)
.Select(y => y.LieferantenArtikel.Select(x => x.Lieferant));

第一个类有一个名为SelectedArtikel的属性,它是另一个拥有LieferantentArtikel列表的类。这些物体中的每一个都有一个叫Lieferant的物体,我需要它。

根据您的描述:

var neueLieferanten = Bestellpositionen.Where(bp => bp.SelectedArtikel != null)
.SelectMany(bp => bp.SelectedArtikel.LieferantenArtikel) 
.Select(la => la.Lieferant);

SelectMany在10个Bestellpositionen.SelectedArtikels内获取例如10个List<LieferantenArtikel>,并将它们转换为单个LieferantenArtikel列表,然后Select从中提取Lieferant属性

对于相同的结果,你可以用稍微不同的结构:

var neueLieferanten = Bestellpositionen.Where(bp => bp.SelectedArtikel != null)
.SelectMany(bp => bp.SelectedArtikel.LieferantenArtikel 
.Select(la => la.Lieferant)
);

我用这种方式来概括,实际上,唯一的变化是括号的位置。。我们要么把一个列表列表变成一个列表,然后提取一个属性,要么从列表中的列表中提取一个特性,然后把它变成一个单独的列表;使用更能吸引你理解的方式(我更喜欢前者(

最新更新