代码语言:javascript复制
针对数组可以用List.Distinct(),可以过滤掉重复的内容。
针对对象中的某个字段只能用Distinct(IEqualityComparer<T>)
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace listSort
{
public class StrItem
{
public int id;
public int num;
}
public class Comparint : IEqualityComparer<StrItem>
{
public bool Equals(StrItem x, StrItem y)
{
if (x == null && y == null)
return false;
return x.num == y.num;
}
public int GetHashCode(StrItem obj)
{
return obj.ToString().GetHashCode();
}
}
class Program
{
static void Main(string[] args)
{
delegateSort();
Console.ReadLine();
}
static int sort(StrItem str1,StrItem str2)
{
int ret = 0;
if (str1.id > str2.id) //id从小到大
{
return 1;
}
else if (str1.id == str2.id)
{
if (str1.num < str2.num)//num从大到小
{
return 1;
}
}
return ret;
}
static void delegateSort()
{
List<StrItem> listItem = new List<StrItem>();
StrItem str1 = new StrItem();
str1.id = 1;
str1.num = 0;
listItem.Add(str1);
StrItem str2 = new StrItem();
str2.id = 2;
str2.num = 3;
listItem.Add(str2);
StrItem str3 = new StrItem();
str3.id = 2;
str3.num = 4;
listItem.Add(str3);
StrItem str4 = new StrItem();
str4.id = 3;
str4.num = 3;
listItem.Add(str4);
listItem.Sort(sort);
listItem = listItem.Distinct(new Comparint()).ToList();
foreach (var item in listItem)
{
Console.WriteLine(item.num);
}
}
}
}
输出结果 :0 3 4