2016-03-02 33 views
0

我有一個包含屬性Id,標題和顏色的對象列表。每個具有特定ID的項目都會分配一個標題和顏色。我想要兩個列表1)所有標題列表和所有顏色列表。獲取與另一個屬性對應的對象列表中的屬性列表

我從列表中的遊戲,比如

var dataSet = mList.Select (c => c.Title).Distinct.ToList(); 

現在我想要的顏色列表中,對應於數據集的標題。

如果我做的:

var colordataSet = mList.Select (c => c.Color).Distinct.ToList(); 

我得到的所有的顏色中,不論標題/ ID的父目錄。我希望顏色分配給標題列表中標題的項目。 有沒有辦法做到這一點?

回答

1

我會用一本字典,並與this overloadSystem.Linq.ToDictionary變換的名單:

Dictionary<string,Color> dict = mList.ToDictionary(c => c.Title, //Keyselector 
                c => c.Color); //Elementselector 

然後你就可以得到相應的顏色標題:

Color color = dict["ColorForThisTitle"]; 

編輯:要具有鮮明的Title字典中的:

var dict = mList.GroupBy(k => k.Title, (k,c) => c.FirstOrDefault()) 
       .ToDictionary(c => c.Title, 
           c => c.Color); 
+0

@HimBromBeere不錯,我會編輯我的答案 –

+0

感謝您的回答。像魅力一樣工作。 –

1

爲了簡化什麼@Alexander做...您可以使用ToLookUp

var getColorsbyTitle = mList.ToLookUp(c=>c.Title,c=>c.Color); 

//you can use this like below 

var color = getColorsByTitle("xyz").FirstorDefault(); 

注:這確實內部同樣的事情,集團通過與ToDictionary。

相關問題