c#对象集合去重_C#LINQ对对象进行去重

首先实现一个扩展方法

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace FirstProject

{

/// /// LINQ 扩展方法类

///

public static class LINQExtention

{

public static IEnumerableDistinctByFields(this IEnumerablesource, Funcselector)

{

// 通过HashSet的特性(值不重复)来去重

HashSetkeySet = new HashSet();

Listlist = new List();

foreach (var item in source)

{

if (keySet.Add(selector(item)))

{

// 如果能成功添加到HashSet中,表明不是重复的数据

list.Add(item);

}

}

return list;

}

}

}

其次是调用

// 创建学生集合

ListstuList = new List()

{

new Student { ID = "1",Name = "张三",Age = 18},

new Student { ID = "2",Name = "李四",Age = 18},

new Student { ID = "3",Name = "王五",Age = 18},

new Student { ID = "4",Name = "赵六",Age = 20},

new Student { ID = "5",Name = "田七",Age = 21},

new Student { ID = "6",Name = "张三",Age = 21}

};

// 单字段去重

var stus = stuList.DistinctByFields(p => p.Name);

// 多字段去重

// var stus = stuList.DistinctByFields(p => new { p.Name, p.Age });

foreach (var item in stus)

{

Console.WriteLine("学生ID:{0},学生姓名:{1},学生年龄:{2}", item.ID, item.Name, item.Age);

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值