让我们假设我给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