检查两个IEnumerables是否相等

时间:2018-03-26 14:46:58

标签: c# linq

我正在尝试创建一个辅助方法,该方法将检查两个msiexec /l* log.txt /i Z:\NSCP-0.4.3.143-x64.msi INSTALLLOCATION="C:\Program Files\NSClient++" CONFIGURATION_TYPE="ini://C:\Program Files\NSClient++\nsclient.ini" CONF_CAN_CHANGE="TRUE" ALLOWED_HOSTS="10.*.*.*" NSCLIENT_PWD="" CONF_CHECKS="TRUE" CONF_NSCLIENT="TRUE" /quiet 集合在序列中的元素和项目序列方面是否相等。我已经提出了一个解决方案,在功能上似乎可以完成这项工作。我想知道是否有更有效的方法可以在两个IEnumerable<T>集合之间进行这种比较,这种集合更加清晰简洁。

IEnumerable<T>

1 个答案:

答案 0 :(得分:2)

Enumerable.SequenceEqual怎么样?

您有两种选择。

  1. 使用T的默认相等比较器:

    public static bool SequenceEqual<TSource>(
        this IEnumerable<TSource> first,
        IEnumerable<TSource> second
    
  2. 使用特定的IEqualityComparer<T>;当您需要特定的相等逻辑时,类型T不提供,或者您正在使用一些使用Equals(object other)的遗留代码并且需要装箱(T是值类型)。< / p>

    public static bool SequenceEqual<TSource>(
        this IEnumerable<TSource> first,
        IEnumerable<TSource> second,
        IEqualityComparer<TSource> comparer