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

标签 c# arrays

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

我所做的是这样的:

  for (var j = 0; j < newData.ItemArray.Length; j++)
  {
    if (newData.ItemArray[j].ToString().ToLower() != originalData.ItemArray[j].ToString().ToLower())
    {
      isModified = true;
      break;
    }
  }

我不能说我对这个解决方案感到满意,但是从我所做的几个测试来看它似乎是可行的。但是我觉得应该有更好的方法来做到这一点。

额外的 从评论来看,我的问题可能不太清楚。这是我得到的输入:

enter image description here

我希望另一个数组包含相同的数据。唯一的问题是所有元素都存储为对象。因此,例如,我想知道第一个数组中的元素 [3] 是否与另一个数组中的元素 [3] 相似。理想情况下,我想比较两个 bool 值,但由于所有内容都存储为对象,我正在寻找如何检查值是否相同的想法,或者例如来自 [1] = "Training"另一个数组是 [1] = "Not Training" 等等。

最佳答案

由于您使用 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);

关于c# - 比较两个对象类型数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895274/

相关文章:

python - python程序中不需要的换行符

java - 使用 SQL 表中的 String[] 对象填充数组列表

c# - Lambda 表达式和 || Entity Framework 中的运算符

c# - Mongodb:无法通过ObjectID获取GridFSFileInfo,但通过文件名成功

c# - 使用静态工厂是依赖注入(inject)的有效模式吗?

php - 如何通过连接从 MySQL select 获取嵌套数组

java - 从android中的xml数组获取资源

c# - 字符到数字的转换过程失败

c# - 构建 View 模型的代码应该放在哪里?

python - 如何在Python中将16位无符号整数拆分为字节数组?