一种比较数组的方法

joh*_*oss 1 c# linq arrays

我想知道下面我比较一个字符串数组(或任何简单类型)的方法是否会产生任何性能影响.

bool AreValuesEqual(List<string> oldFieldValue, List<string> newFieldValue)
    {
        if (oldFieldValue.Count != newFieldValue.Count)
            return false;

        var list1 = oldFieldValue;
        list1.AddRange(newFieldValue);
        var list2 = list1.Distinct();
        return list2.Count() == newFieldIds.Count;
    }
Run Code Online (Sandbox Code Playgroud)

我不知道Distinct()对此有多强烈,但我认为与其他循环相比它不应该太多.

编辑 - 抱歉,应该提供更多背景信息.情侣:

- 参数数组中没有重复项.

- 我真的不关心顺序,我只是想知道一个数组中的值是否与另一个数组相同.如果另一个数组具有不同的值,则返回false.

Dav*_*res 6

我不认为您的代码存在严重的性能问题.然而,令我困扰的是你将list1修改为进行比较的副作用.

以下工作会更好吗?

if(list1.Count == list2.Count)
{
    var list3 = list1.Intersect(list2);
    return list3.Count == list1.Count();
}
Run Code Online (Sandbox Code Playgroud)

类似的问题发布在比较两个列表中的差异.