返回顶部

收藏

c#使用linq移除列表中的重复项

更多

假定我有如下列表信息:

1         Item1       IT00001        $100
2         Item2       IT00002        $200
3         Item3       IT00003        $150
1         Item1       IT00001        $100
3         Item3       IT00003        $150

一行为一条数据,如何使用linq移除重复项呢?

var distinctItems = items.Distinct();

如果需要根据某一列的值来移除重复项,就需要实现自己的IEqualityComparer<Item>类了,如下示例:

class DistinctItemComparer : IEqualityComparer<Item> {

    public bool Equals(Item x, Item y) {
        return x.Id == y.Id &&
            x.Name == y.Name &&
            x.Code == y.Code &&
            x.Price == y.Price;
    }

    public int GetHashCode(Item obj) {
        return obj.Id.GetHashCode() ^
            obj.Name.GetHashCode() ^
            obj.Code.GetHashCode() ^
            obj.Price.GetHashCode();
    }
}

用法如下:

var distinctItems = items.Distinct(new DistinctItemComparer());

标签:c#,.net,linq

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. Herb Sutter 发表 2012-12-03 21:34:30 Perspective: “Why C++ Is Not ‘Back’”
  2. 姚 广远 发表 2015-04-08 01:01:52 .NET逻辑分层架构总结
  3. 姚 广远 发表 2015-06-22 07:01:45 C++ 中的封送处理概述
  4. IT路人 发表 2013-07-05 05:00:00 利用C# .net在WP8里面异步加载任务
  5. 米豆网 - 1000seo 发表 2012-08-21 05:09:00 .netframework中TimeZoneInfo类的使用
  6. 姚 广远 发表 2015-04-13 02:54:10 C# 与 C++ 数据类型对照表
  7. 姚 广远 发表 2015-06-22 07:01:45 C++ 中的封送处理概述
  8. dormy 发表 2013-12-12 02:28:41 c#.netDataGrid绑定数据库数据
  9. 姚 广远 发表 2015-04-13 05:03:47 .NET运行机制
  10. 姚 广远 发表 2015-04-15 05:20:48 C#语言规范—语句
  11. itcodes 发表 2014-07-22 17:00:00 C#计算时间差。
  12. zangw 发表 2015-01-21 11:32:10 Named pipe client throw UnauthorizedAccessExceptio

发表评论