我想检查一个列表是否包含另一个列表的所有元素,例如:
(a,b,c,d) 包含 (c, a, d) = true (a, b, c, d) 包含 (b, b, c, d) = false 我尝试了这样的方法:
但这样做将无法正确解决这个问题:
嵌套循环同理。
(a,b,c,d) 包含 (c, a, d) = true (a, b, c, d) 包含 (b, b, c, d) = false 我尝试了这样的方法:
static bool ContainsOther<T>(IEnumerable<T> a, IEnumerable<T> b)
{
return new HashSet<T>(a).IsSupersetOf(new HashSet<T>(b));
}
但这样做将无法正确解决这个问题:
(a, b, c, d) 包含 (b, b, c, d) = false
,它会返回 true
,但我想要得到的是false
。嵌套循环同理。
GroupBy
,而是更有效地使用 MoreLinq 包中的CountBy
运算符。 - Theodor Zoulias