說明:
using System; using System.Collections.Generic; using System.Linq; namespace JsonTest { public class Program { static void Main(string[] args) { List<People> list = new List<People>(); People temp = new People() { Name = "小明", Age = 19 }; list.Add(new People() { Name = "小明",Age=19 }); list.Add(new People() { Name = "小紅", Age = 19 }); list.Add(new People() { Name = "小明", Age = 19 }); List<People> DistinctList = list.DistinctBy(x=> (x.Name,x.Age)).ToList(); Console.Read(); } public string GetName(People obj) { return obj.Name; } } public static class Test { /// <summary> /// 為集合去除重復 /// </summary> /// <typeparam name="TSource">集合類型</typeparam> /// <typeparam name="TKey">根據xx標識去重</typeparam> /// <param name="source">待去重的集合</param> /// <param name="keySelector">去重的標識(可理解為GroupBy的key)</param> /// <returns></returns> public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { //創建一個 TKey類型的 HashSet集合 var seenKeys = new HashSet<TKey>(); //循環待去重的數組 foreach (TSource element in source) { //使用 Hash集合的不能添加重復對象的特性,來判讀是否重復(if能添加成功,則說明當前集合內數據未重復) if (seenKeys.Add(keySelector(element))) { yield return element; } } } } /// <summary> /// 測試類 /// </summary> public class People { public string Name { get; set; } public int Age { get; set; } } }