我有一个 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
答案 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();