首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Linq根据第二列删除重复的列值

使用Linq根据第二列删除重复的列值
EN

Stack Overflow用户
提问于 2016-01-07 17:07:35
回答 1查看 1.6K关注 0票数 0

我有一个datatable,它有两个列"DT“和"ASOF",都是日期。有些行具有DT的重复值,我通过以下操作找到了这个值:

代码语言:javascript
运行
复制
      var duplicateGroups = dt.AsEnumerable()
                                  .GroupBy(row => row.Field<SqlDateTime>("DT"))
                                  .Where(g => g.Count() > 1);

但是还有另一篇专栏," ASOF“,我想去掉一个基于"ASOF”值的重复DTs,基本上任何ASOF日期都是最新的。

我可以想到一个for循环,它可以通过创建一个重复的数组,找到最新的ASOF,然后从带有这个值的DB表中删除所有其他的。然而,我觉得Linq有一些能力能够做到这一点,可能是用一个比较器。但我对此有一些非常基本的认识。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 17:15:06

除非您确实需要修改原始DataTable,否则只需创建一个投影,该投影将在每个具有“最新”ASOF值的DT组中为您提供记录:

代码语言:javascript
运行
复制
  var rows = dt.AsEnumerable()
               .OrderBy(row => row.Field<SqlDateTime>("ASOF"))
               .GroupBy(row => row.Field<SqlDateTime>("DT"))
               .Select(rg => rg.First())
               .ToList();

然后,要么清除原始数据表并用这些行替换它,要么根据这些行创建一个新的DataTable,并将其与原始数据交换。

另一种选择是在数据加载到数据表之前过滤数据,但是由于您没有指定如何发生这种情况,所以我无法提供任何指导。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34661117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档