使用 LINQ 编译唯一对象列表

Compile a list of unique objects using LINQ

有伪代码

class Bar {int BarId;}

class Foo {
  List<Bar> Bars;
}

使用 Linq,我应该如何 select foo 列表中所有可用的唯一栏?

List<Foo> foos = GetFoos(); // anything

List<Bar> allBars = foos.Select(f=>f.Bars)...?

您可以使用 SelectMany() Linq 方法,如下所示:

List<Bar> allBars = foos.SelectMany(f => f.Bars).ToList();

如果您的列表中需要不同的 Bar 实例,请添加 Distinct(),如下所示:

List<Bar> allBars = foos.SelectMany(f => f.Bars).Distinct().ToList();

来源Microsoft Documentation:

If you want to return distinct elements from sequences of objects of some custom data type, you have to implement the IEquatable generic interface in the class.