过滤数据表中最后出现的重复项

问题描述 投票:0回答:1

我正在使用以下代码对数据表进行排序:

Dim sortedExtRecords1 As DataTable
sortedExtRecords1 = parsedDataset.Tables("Detail").Clone

Dim dvParsedDataset1 As New DataView(parsedDataset.Tables("Detail"))
dvParsedDataset1.Sort = AuthorizatonConstants.Authorization_ID

sortedExtRecords1 = dvParsedDataset1.ToTable("Detail")

我可以进一步过滤结果以仅返回非重复项,如果有重复项,我只想要重复项的最后一条记录。我的重复项大小不同,有些 id 可以有 3 个重复项,其他 5 个,其他 10 个,我不确定这是否重要

c# vb.net
1个回答
1
投票

您可以使用 LINQ:

DataTable nonDups = parsedDataset.Tables("Detail").AsEnumerable()
    .GroupBy(row => row.Field<string>("Authorization_ID"))
    .OrderBy(grp => grp.Key)
    .Select(grp => grp.Last())
    .CopyToDataTable();

这将选择每个重复组的最后一行。如果您想订购团体,请使用

grp.OrderBy

© www.soinside.com 2019 - 2024. All rights reserved.