【发布时间】:2013-06-26 05:54:03
【问题描述】:
我有以下方式的输入格式
S.no姓名工资
1 Tom $200
1 Tom $300
1 Tom $400
2 Rob $500
2 Rob $600
结果集应该是这样的
Name OriginalWage DuplicateWage
Tom $200 $300
Tom $200 $400
Rob $500 $600
我应该留下第一条记录,把重复的记录算进去。这里原来的工资是第一个不同记录的工资。
如何使用 linq 完成结果集。
This is the one i tried so far
//Get duplicate values
Dim Duplicates = wageRecordList.GroupBy(Function(w) w.serialnumber).Where(Function(d) d.Count > 1)
//load duplicates to a list
lstDuplicateRecords=Duplicates
//Read list--This one is a hard coded sort of thing and works only for one set of duplicate values
lstResult = (From duplicateRecords In lstDuplicateRecords.Skip(1) Select serialnumber= duplicateRecords.serialnumber, Name= duplicateRecords.Name, OriginalWages= CType(lstDuplicateRecords(0).Wages, String), _
DuplicateWages = CType(duplicateRecords.wages, String))
【问题讨论】:
-
嗯,到目前为止你尝试了什么?这是 LINQ to Objects、LINQ to SQL 还是别的什么?你有一个排序列可以用来确定“第一个”值吗?
-
副本在哪里,你尝试过什么?听起来你需要组
-
@JonSkeet 这是我迄今为止尝试过的 //获取重复值 Dim Duplicates = warnRecordList.GroupBy(Function(w) w.serialnumber).Where(Function(d) d.Count > 1 ) //将重复项加载到列表中 lstDuplicateRecords=Duplicates //读取列表--这是一种硬编码的东西,仅适用于一组重复值 lstResult = (From duplicateRecords In lstDuplicateRecords.Skip(1) Select serialnumber= duplicateRecords.serialnumber, Name= duplicateRecords.Name, OriginalWages= CType(lstDuplicateRecords(0).Wages, String), _ DuplicateWages = CType(duplicateRecords.wages, String))