2017-11-25 183 views
-5

我有下面的代碼:C#創建一個字典,通過拉姆達

var dict = new Dictionary<byte?, List<Id>>(); 
foreach (var record in Records) 
{ 
    if(record.SubId.HasValue) 
    { 
     dict.Add(SubIdsDictionary[record.SubId.Value], new List<Record> { record }); 
    } 
    else 
    { 
     dict.Add(IdsDictionary[record.Id.Value], new List<Record> { record }); 
    } 
} 

記錄是記錄一個name.In這個記錄類我有身份證,SUBID和公司名單。每個名字的id都是強制性的,但是subid不是。所以,如果name有subid,那麼我必須優先考慮subid,並且首先從字典SubIdsDictionary中獲取新的sub id(因爲subid是參考字典SubIdsDictionary中的關鍵字) subid作爲關鍵字,整個記錄作爲新字典中的值字典。但如果名稱不具有subid,那麼我將使用id,並首先從引用字典IdsDictionary中獲取新的id,並將新的id作爲key並且value將是整個記錄。 現在在新的字典鍵將混合ID和子和記錄將價值列表

有人可以幫助我通過lambda轉換此代碼?

+0

任何幫助???????? – Remon

+0

'Dictionary >()'我認爲你canot有一個字典鍵null,用來填充你的'新列表'使用「(」,not「{」 –

+0

@CelsoLívero'new List {aT, anotherT}'是完全有效的。它是一個集合初始化器。 – pinkfloydx33

回答

2

您可以使用Linq的ToDictionary方法。

它不應該是這樣的:

var dict = Records.ToDictionary(
    r => (r.SubId.HasValue ? SubIdsDictionary[r.SubId.Value] : IdsDictionary[r.Id.Value]), 
    r => new List<Record> {r} 
);