我嘗試使用下面的代碼的對象列表轉換成詞典:轉換鮮明的列表詞典不工作
var MyDictionary = MyList.Distinct().ToDictionary(i => i.ObjectId, i => i);
我知道,字典不應該包含重複的元素,因此.Distinct()
。但是,如果存在重複元素,我仍然會收到以下異常:
具有相同密鑰的項目已添加。
MyList
是myObject的名單,看起來像這樣:
public class MyObject{
public string ObjectId { get; set; }
public string FName { get; set; }
public string LName { get; set; }
}
是否有更好的方法來創建對象列表的字典嗎?或者我做錯了什麼?
我猜你想按'ObjectId'而不是調用'Distinct'。要麼你有多個對同一個對象的多個引用,要麼有多個具有相同「ObjectId」的對象。 –
即僅僅因爲你的MyObject不等於(.Distinct)並不意味着它們的ObjectIds不相等。 – RJFalconer
@DStanley哪種解決方案更高效?使用groupBy或自定義比較器與Distinct()? –