从List中删除具有重复属性的对象

Bax*_*ter 3 c# linq list

我有一个C#中的对象列表.所有对象都包含属性dept和course.
有几个对象具有相同的部门和课程.

如何修剪List(或创建一个新List),其中每个唯一(dept&course)属性只有一个对象.

[从列表中删除任何其他重复项]

我知道如何使用单个属性执行此操作:

fooList.GroupBy(x => x.dept).Select(x => x.First());
Run Code Online (Sandbox Code Playgroud)

但是,我想知道如何为多个属性(2个或更多)执行此操作?

Ahm*_*eed 5

要使用多个属性,您可以使用匿名类型:

var query = fooList.GroupBy(x => new { x.Dept, x.Course })
                   .Select(x => x.First());
Run Code Online (Sandbox Code Playgroud)

当然,这取决于什么类型DeptCourse确定平等.或者,您的类可以实现IEqualityComparer<T>,然后您可以使用接受比较器的Enumerable.Distinct方法.