我有以下方法:

namespace ListHelper
{
    public class ListHelper<T>
    {
        public static bool ContainsAllItems(List<T> a, List<T> b)
        {
            return b.TrueForAll(delegate(T t)
            {
                return a.Contains(t);
            });
        }
    }
}

其目的是确定列表是否包含另一个列表的所有元素。在我看来,已经将类似的东西内置到.NET中,是这种情况,我是否在复制功能?

编辑:我的歉意,因为我没有提前说明我在Mono 2.4.2版上使用此代码。

答案

如果您使用.NET 3.5,很容易:

public class ListHelper<T>
{
    public static bool ContainsAllItems(List<T> a, List<T> b)
    {
        return !b.Except(a).Any();
    }
}

这检查是否有任何元素b不在a - 然后倒转结果。

请注意,制作方法 通用而不是班级,没有理由需要List<T>代替IEnumerable<T> - 因此,这可能是优选的:

public static class LinqExtras // Or whatever
{
    public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b)
    {
        return !b.Except(a).Any();
    }
}

来自: stackoverflow.com