我有一个C#中的对象列表.所有对象都包含属性dept和course.
有几个对象具有相同的部门和课程.
如何修剪List(或创建一个新List),其中每个唯一(dept&course)属性只有一个对象.
[从列表中删除任何其他重复项]
我知道如何使用单个属性执行此操作:
fooList.GroupBy(x => x.dept).Select(x => x.First());
Run Code Online (Sandbox Code Playgroud)
但是,我想知道如何为多个属性(2个或更多)执行此操作?
要使用多个属性,您可以使用匿名类型:
var query = fooList.GroupBy(x => new { x.Dept, x.Course })
.Select(x => x.First());
Run Code Online (Sandbox Code Playgroud)
当然,这取决于什么类型Dept和Course确定平等.或者,您的类可以实现IEqualityComparer<T>,然后您可以使用接受比较器的Enumerable.Distinct方法.