我有一个类型X的列表。这包含字段,我只需要返回列表中的唯一记录。我需要使用包含时间戳的字段/属性(OIndex)之一并使用该属性对其进行过滤。清单是这样的:C#如何过滤列表并删除重复项?
> 2c55-Checked-branchDeb-20160501121315-05
> 2c60-Checked-branchDeb-20160506121315-06
> 2c55-Checked-branchDeb-20160601121315-07
> 2c55-Checked-branchDeb-20160601141315-07
> 2c60-Checked-branchDeb-20160720121315-08
在上面的例子中,最后一个字段是recordId,所以我们有一个“07”的重复记录。时间戳是四个字段。所以我想获得所有的记录,除了第三个是重复的。记录“07”的最新版本是第四行。
我开始做代码,但挣扎。到目前为止:
List<X> originalRecords = GetSomeMethod(); //this method returns our list above
var duplicateKeys = originalRecords.GroupBy(x => x.Record) //x.Record is the record as shown above "05", "06" etc
.Where(g => g.Count() > 1)
.Select(y => y.Key);
现在我该怎么办?现在我有重复的键。 我想我需要再次通过OriginalRecords列表并查看它是否包含重复密钥。 然后在日期时间使用子字符串。将此存储在某个地方,然后删除不是最新的记录。并用过滤器保存原始记录。由于
你能定义这个键:'2c55-Checked-branchDeb-20160501121315-05'吗? – FrankerZ
你看过[Distinct](http://www.dotnetperls.com/distinct)linq扩展方法吗? –
@FrankerZ没有记录本身不是一个关键 – user2906420