在运行时我得到两个不同的数组{object[10]},我想检查第一个数组中的值是否与另一个数组中的值相同.元素的实际类型可以是string,int或bool.例如元素[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;
}
}
Run Code Online (Sandbox Code Playgroud)
我不能说我对这个解决方案感到满意,但似乎通过我做的几个测试来判断.但是我觉得应该有更好的方法来做到这一点.
另外,评论中的Judjing可能在我的问题中并不太清楚.这是我得到的输入:
我希望其他数组包含相同的数据.唯一的问题是所有元素都存储为对象.因此,例如,我想知道[3]第一个数组中的元素是否[3]与另一个数组中的元素相似.理想情况下,我想比较两个布尔值,但由于所有内容都存储为对象,我正在寻找如何检查值是否相同的想法,或者例如来自[1] = "Training"另一个数组中的[1] = "Not Training"等等.
因为你使用ItemArray我很确定它的属性DataRow返回Object[]该行的所有字段.所以你想比较两个数据行.
你可以使用SequenceEqual:
bool isModifed = !newData.ItemArray.SequenceEqual(originalData.ItemArray);
Run Code Online (Sandbox Code Playgroud)
这比较了字符串区分大小写而不是您的方法.
如果你想忽略这个案子:
isModifed = !newData.ItemArray.Select(obj => obj?.ToString())
.SequenceEqual(originalData.ItemArray.Select(obj => obj?.ToString())
, StringComparer.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |