根据列值-linq删除重复项

时间:2010-08-10 06:04:08

标签: c# linq-to-sql asp.net-mvc-2

我在员工和团队之间有很多很多关系。遵循linq声明

int[] GroupIDs = {6,7};


var result = from g in umGroups
    join empGroup in umEmployeeGroups on g.GroupID equals empGroup.GroupID
    where  GroupIDs.Contains(g.GroupID)                     
    select new {  GrpId = g.GroupID,EmployeeID = empGroup.EmployeeID };

返回groupid和employeeid。结果是

GrpId  | EmployeeID
6      |   18
6      |   20  
7      |   19
7      |   20

我需要删除employeeid重复的行,例如employeeid = 20的任何一行
感谢

1 个答案:

答案 0 :(得分:30)

好的,如果您不关心删除哪个员工,您可以尝试以下方式:

var result = query.GroupBy(x => x.EmployeeId)
                  .Select(group => group.First());

你还没有指定它是在LINQ to SQL,LINQ to Objects还是其他东西......我不知道它的SQL翻译是什么。如果您正在处理相对少量的数据,您可以始终强制最后一位处于进程中:

var result = query.AsEnumerable()
                  .GroupBy(x => x.EmployeeId)
                  .Select(group => group.First());

此时您实际上可以使用MoreLINQ方法DistinctBy

var result = query.AsEnumerable()
                  .DistinctBy(x => x.EmployeeId);