针对数组可以用List.Distinct(),可以过滤掉重复的内容。
针对对象中的某个字段只能用Distinct(IEqualityComparer<T>)
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