讓我們假設我給Dictionary<int, List<int>>
,我想用以下條件如何有效地修剪基於「爲子集」條件清單?
- 的
item
應該從字典中刪除,如果存在在字典中的itemLarger != item
這樣item.Value.Union(new[] { item.Key })
是itemLarger.Value.Union(new[] { itemLarger.Key })
一個子集進行清理,
也就是說,字典中的每個項目都將通過將項目的關鍵字附加到項目的值而獲得的數字列表來表示,並且我想擺脫由某個其他項目的表示的子集表示的項目。
例子:
var testResult = new Dictionary<int, List<int>>
{
{ 2, new[] { 3, 4 }},
{ 3, new[] { 2, 4 }},
{ 1, new[] { 2, 3, 4 }},
{ 4, new[] { 2, 3 }}
};
在這種情況下,留在列表中的唯一元素是{1, {2, 3, 4}}
我似乎無法找到一些優雅的方式做到這一點,因爲
GroupBy
不允許我指定哪些元素特別應作爲關鍵的時候,我有兩個應該細分電子郵件Distinct
不允許我指定,如果兩個元素都沒有不同,這其中應保持在列表
當然這是一個平凡的方式是可行的。我想知道是否有一個很好的。
謝謝你的任何想法。
+1:比我的方法好。它創建HashSets只有一次,使用內置的方法來確定的子集。 –
編輯,以解決一些小錯誤:) – digEmAll