我有兩個Dictionary<Person,Boolean>
。 字典一個包含:聯盟字典
Person A -> false
Person B -> true,
Person C -> false;
字典B包含:
Person A -> true;
Person D -> false;
我想有一個結果,它包含了所有的人一個時間,並設置布爾值TURE,如果一個人包含在一個真正的這兩個列表之一。
我該如何解決這個dict.Union()
?
感謝Kooki
我有兩個Dictionary<Person,Boolean>
。 字典一個包含:聯盟字典
Person A -> false
Person B -> true,
Person C -> false;
字典B包含:
Person A -> true;
Person D -> false;
我想有一個結果,它包含了所有的人一個時間,並設置布爾值TURE,如果一個人包含在一個真正的這兩個列表之一。
我該如何解決這個dict.Union()
?
感謝Kooki
聽起來像是你可以使用:
var result = first.Union(second)
.GroupBy(x => x.Key) // Group by dictionary keys
.ToDictionary(g => g.Key, // Key for new dictionary
g => g.Any(p => p.Value)); // Any true values?
只有在'Person'中正確實現'GetHashCode'和'Equals'時,'Union'纔有效。 –
@TimSchmelter:它們已經在字典中了,所以它已經可以工作,或者OP只是使用引用等式。 –
謝謝,它適用於Person類上的GetHashCode()運行良好... :-) – Kooki
http://stackoverflow.com/questions/294138/merging-dictionaries-in-c-sharp –
_「所有的人一個時間「_什麼讓你的人分明? –
是由散列鍵或某些自定義比較確定的相等性。如果是散列,這是默認實現(從語義上來說是ref比較,所以從值的角度來看兩個相同的對象仍然會不同)或者你自己的實現? –