如何通过Linq区分所有子子属性?

Tru*_*an1 2 .net c# linq .net-4.0

我试图显示子属性的所有可能值.下面我试图将所有产品的所有颜色都变成一个变量.我怎样才能获得下面的allDistinctColors?

IEnumerable<Product> products = GetAllProducts();
IEnumerable allDistinctColors = ???

public class Product
{
  public List<Option> Options { get; set; }
}

public class Option
{
  public string Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Raw*_*ing 11

用于SelectMany为每个输入项(产品)选择多个输出项(选项),并将它们连接到单个枚举中以进一步查询:

var allDistinctColors = products
    .SelectMany(p => p.Options)
    .Select(o => o.Color)
    .Distinct();
Run Code Online (Sandbox Code Playgroud)