将 DataRow 与其他 DataRow 进行比较

时间:2021-07-22 14:58:33

标签: c#

我有一个 List 类型的通用 MatchingResult (请参阅下面的 MatchingResult 类型实现)

我能够使用 for 循环来获得我想要的结果,但我还想知道使用 lambda 表达式或 LINQ,如何提取与Matches 属性?

Left 类:

MatchingResult

这是我的 public class MatchingResult { public DataRow Left { get; set; } public IEnumerable<DataRow> Matches { get; set; } } 列表:

MatchingResult

最终输出将是满足上述条件的 List<MatchingResult> list = PopulateList(); 列表。

编辑:DataRows 具有相同数量的列/名称和相同的顺序。

示例数据:

数据行(左)

DataRows

数据行(匹配)

Column1 | Column2 | Column3
--------+---------+--------
A       |   X     |  Y

在上面的例子中,预期的结果是包含以下数据的数据行列表:

Column1 | Column2 | Column3
--------+---------+--------
A       |   X     |  Y
A       |   O     |  W
A       |   X     |  Y

1 个答案:

答案 0 :(得分:2)

您可以轻松使用现有的 DataRowComparer.Default 来比较所有字段:

List<MatchingResult> matches = list
    .Select(m => new MatchingResult 
    {
        Left = m.Left,
        Matches = m.Matches.Where(r => DataRowComparer.Default.Equals(m.Left, r)).ToList()
    }).ToList();
相关问题