2

我正在尝试显示子属性的所有可能值。下面我试图将所有产品的所有可能颜色放入一个变量中。如何在下面获得 allDistinctColors?

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

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

public class Option
{
  public string Color { get; set; }
}
4

3 回答 3

11

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

var allDistinctColors = products
    .SelectMany(p => p.Options)
    .Select(o => o.Color)
    .Distinct();
于 2012-07-05T11:42:12.567 回答
2
var allDistinctColors = products
     .SelectMany(p => p.Options.Select(o => o.Color))
     .Distinct()
于 2012-07-05T11:44:11.563 回答
1

查询语法也适用于此:

var allDistinctColors = (from p in products
                         from o in p.Options
                         select o.Color).Distinct();
于 2012-07-05T23:25:53.060 回答