我有一个通过导入平面文件创建的数据表。举例来说,该表可能如下所示...
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] 删除。
我来说两句