我正在尝试显示子属性的所有可能值。下面我试图将所有产品的所有颜色都变成一个变量。我怎样才能获得下面的allDistinctColors?
IEnumerable<Product> products = GetAllProducts();
IEnumerable allDistinctColors = ???
public class Product
{
public List<Option> Options { get; set; }
}
public class Option
{
public string Color { get; set; }
}
答案 0 :(得分:10)
使用SelectMany
为每个输入项(产品)选择多个输出项(选项),并将它们连接成一个枚举,以便进一步查询:
var allDistinctColors = products
.SelectMany(p => p.Options)
.Select(o => o.Color)
.Distinct();
答案 1 :(得分:2)
var allDistinctColors = products
.SelectMany(p => p.Options.Select(o => o.Color))
.Distinct()
答案 2 :(得分:1)
查询语法也适用于此:
var allDistinctColors = (from p in products
from o in p.Options
select o.Color).Distinct();