【问题标题】:Compare two datatables while taking sorting into account在考虑排序的同时比较两个数据表
【发布时间】:2013-09-20 18:02:10
【问题描述】:

我有如下两个数据表,我正在使用下面的数据表来比较两者:

var diffResult = actual.AsEnumerable().Except(expected.AsEnumerable(), 
DataRowComparer.Default);

Assert.IsFalse(diffResult.Any());

在这种情况下,diffResult 不返回任何内容,并且在我想确保两个表匹配时可以正常工作。然而,这种比较方式没有考虑排序。

如果两个表包含相同的数据并且它们的排序方式相同,我如何比较这两个表并返回 True?

actual
-------------------------
 Code  |   Name 
--------------------------
 101  |  A
 101  |  B
 101  |  C
--------------------------

expected
-------------------------
 Code|   Name 
--------------------------
 101  |  C
 101  |  B
 101  |  A
--------------------------

【问题讨论】:

  • 你确定吗?你使用Assert.IsFalse,它会返回false,这意味着diffResult会有一些行。

标签: c# linq sorting datatable


【解决方案1】:

使用SequenceEqual

bool seqEqual = actual.AsEnumerable()
               .SequenceEqual(expected.AsEnumerable(), DataRowComparer.Default);

SequenceEqual 仅当两个列表具有相同数量的元素且与比较器定义的顺序完全相同时才为真。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2010-10-25
    • 2016-09-29
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多