2016-09-02 77 views
0

我有一個項目List<string> keysList<Objects> obj該對象有多個項目,它有另一個對象的名單,讓我們把它叫做持有者擁有它是連鍵的值相同的名稱。插入列表<string>和列表<Object>到字典

List <string> key = {"a","b"} 

List <Object> obj = object with items {name, id, IEnumerable<keyholder>} 

keyholder has value name which can be the same with key. 

我想創建一個

key.ToDictionary(e=>e, f=> obj.Where(obj.keyholder.Where(keyholder.name == key)); 

我要添加對象,當且僅當keyholder.name與中鍵的相同值的字典。

+0

你的問題是不明確的解決了這個問題。什麼是'keyholder'和'obj'?他們來自哪裏 –

+0

如果您想讓我們瞭解您想要實現的目標,您必須展示更多代碼 –

+0

我試圖編輯我的代碼,但連接非常差 基本上 - 列表< key >有{「a」 , 「b」, 「C」}和列表有其中一人叫另一個對象持有者項目 OBJ { 名 ID 持有者:{ID,名稱= { 「一」} } 我要添加因爲obj ist'List '而不是包含keyholder成員的類型列表,所以只有keyholder的名稱與密鑰 –

回答

0

隨着我從你們那裏得到了幫助,我通過使用包含關鍵字,因爲了IEnumerable可以在項目列表

key.ToDictionary(k => k, 
       k => obj.Where(g => g.keyholder.Contains(k)).ToList()); 
1

您的語法不正確。 Where將lambda函數作爲參數。

如果keyholder可以存儲與給定的鍵有多個值,那麼您可以將列表轉換爲Dictionary<TKey, TValue[]>

key.ToDictionary(k => k, 
       k => obj.keyholder.Where(x => x.name == key).ToArray()); 

它將返回具有key所有項目作爲關鍵一Dictionary和數組來自obj.keyholder的值具有對應的name

請注意,您的obj.keyholder應該是List<TValue>,其中TValue是一種具有name屬性的類型。因爲object沒有name屬性,所以不能將此函數應用於List<object>

+0

這看起來不錯,讓我試試看,並回應你。 –

+0

... obj是'List '... – DarkSquirrel42

+0

是的,我不能直接從obj調用keyholder,我需要使用obj.where –

相關問題