我有以下方法:

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中的元素,然后反转结果.

请注意,将method设为泛型比将类设为泛型更为常规,并且没有理由要求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();
    }
}

.net相关问答推荐

如何处理以用户为中心的CSP现时值?(uc-lock.bundle.js)

为什么Regex.Escape支持数字符号和空格?

在 .NET 7 项目上设置 Sentry 时遇到问题

NuGet 兼容与计算框架(Xamarin 和 .NET 6)

如何计算给定2个字符串的距离相似性度量?

为 XML 编码文本数据的最佳方法

不同命名空间中的部分类

C# 是否(或将)包含用于副作用验证的功能?

BackgroundWorker 中未处理的异常

使用多个 MemoryCache 实例

多个等待与 Task.WaitAll - 等效?

在 JavaScript 中使用 String.Format?

在 C# 中转义命令行参数

如何退出所有正在运行的线程?

如何允许程序集(单元测试)访问另一个程序集的内部属性?

什么是 C# 中的自动属性,它们的用途是什么?

如何将 WebResponse.GetResponseStream 返回转换为字符串?

如何过滤具有多个条件的 Directory.EnumerateFiles?

.NET 委托类型的正确命名约定?

根据条件从列表中删除项目