VB.NET LINQ或ADO重复数据删除表中的特定列

用户名

我有一个通过导入平面文件创建的数据表。举例来说,该表可能如下所示...

ID    Title        Firstname        Surname        Age    Postcode     Other

----------

1     Mr           Alan             Smith          27     AB1 2BA      75S3B9
2     Mrs          Helen            Smith          25     AB1 2BA      C8FN12
3     Mr           Bob              Jones          53     TS1 2ST      L039FF
4     Mr           Alan             Smith          27     AB1 2BA      66R2WX

如您所见,Alan Smith先生有两个相同的条目,除了具有不同的ID和Other字段。

我需要在“名字”,“姓氏”和“邮政编码”字段上对数据表进行重复数据删除,而忽略“ ID”和“其他”字段。但是,到目前为止,这是我的研究和努力都未能解决的地方,我需要生成的数据表包含所有已删除重复项的字段。

因此,上述重复数据删除看起来像这样...

ID    Title        Firstname        Surname        Age    Postcode     Other

----------

1     Mr           Alan             Smith          27     AB1 2BA      75S3B9
2     Mrs          Helen            Smith          25     AB1 2BA      C8FN12
3     Mr           Bob              Jones          53     TS1 2ST      L039FF

条目4已被删除,因为它被认为是条目1的重复项。

任何帮助将非常感激。

蒂姆·施密特

您可以使用Linq-To-DataSet,尤其是Enumerable.GroupBy

Dim query = From row In table
            Group row By UserKeys = New With {
                Key .Firstname = row.Field(Of String)("Firstname"),
                Key .Surname = row.Field(Of String)("Surname"),
                Key .Postcode = row.Field(Of String)("Postcode")
            } Into grp = Group
            Select grp.First()
' replace table '
table = query.CopyToDataTable()

您:

我仍然想使用“姓氏”和“邮政编码”进行重复数据删除,但是我可能还想使用“姓氏”的第一个字符而不是“姓氏”字段中的所有字符。

然后,我将使用此查询:

Dim query = From row In table
            Let firstName = row.Field(Of String)("Firstname").Trim()
            Let surName = row.Field(Of String)("Surname").Trim()
            Let postCode = row.Field(Of String)("Postcode").Trim()
            Group row By UserKeys = New With {
                Key .initialLetter = If(firstName.Length > 0, firstName.Substring(0, 1), ""),
                Key .Surname = surName,
                Key .Postcode = postCode
            } Into grp = Group
            Select grp.First()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章