比较两个类型对象数组的值

时间:2017-01-27 13:37:06

标签: c# arrays

在运行时我得到两个不同的数组v-if="1 === 2",我想检查第一个数组中的值是否与另一个中的值相同。元素的实际类型可以是{object[10]}stringint。例如元素bool和元素[1] = "Test"等等。

我所做的是:

[2] = 3

我不能说我对这个解决方案感到满意,但似乎根据我做的几个测试来判断。但是我觉得应该有更好的方法来做到这一点。

附加 从评论来看,Judjing可能在我的问题上并不太清楚。这就是我得到的输入:

enter image description here

我希望其他数组包含相同的数据。唯一的问题是所有元素都存储为对象。因此,例如,我想知道第一个数组中的元素 for (var j = 0; j < newData.ItemArray.Length; j++) { if (newData.ItemArray[j].ToString().ToLower() != originalData.ItemArray[j].ToString().ToLower()) { isModified = true; break; } } 是否与另一个数组中的元素[3]相似。理想情况下,我想比较两个布尔值,但由于所有内容都存储为对象我在寻找想法如何检查值是否相同,或者例如来自另一个数组中[3]的{​​{1}等等..

1 个答案:

答案 0 :(得分:5)

由于您使用ItemArray我非常确定DataRow的属性会返回此行所有字段的Object[]。所以你想比较两个数据行。

您可以使用SequenceEqual

bool isModifed = !newData.ItemArray.SequenceEqual(originalData.ItemArray);

这比较区分大小写,而不是你的方法。

如果你想忽略这个案子:

isModifed = !newData.ItemArray.Select(obj => obj?.ToString())
    .SequenceEqual(originalData.ItemArray.Select(obj => obj?.ToString())
        , StringComparer.InvariantCultureIgnoreCase);