2012-07-05 70 views
2

我想顯示一個子屬性的所有可能的值。下面我試圖將所有產品的所有可能的顏色都變成一個變量。我如何獲得下面的所有分數顏色?如何通過Linq獲得所有子屬性的區分?

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

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

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

回答

10

使用SelectMany選擇每輸入項目(產品)多輸出項目(選件),並將它們連接成進一步查詢一個枚舉:

var allDistinctColors = products 
    .SelectMany(p => p.Options) 
    .Select(o => o.Color) 
    .Distinct(); 
2
var allDistinctColors = products 
    .SelectMany(p => p.Options.Select(o => o.Color)) 
    .Distinct() 
1

查詢語法也很好地工作爲此:

var allDistinctColors = (from p in products 
         from o in p.Options 
         select o.Color).Distinct(); 
相關問題