【发布时间】:2015-11-06 09:12:19
【问题描述】:
我有一个这样的对象列表:-
List<EmployeeModel> mList = new List<EmployeeModel>();
mList.Add(new EmployeeModel { Place = "place1", Time = time1, EmployeeName = "abc" });
mList.Add(new EmployeeModel { Place = "place2", Time = time2, EmployeeName = "abc" });
mList.Add(new EmployeeModel { Place = "place3", Time = time3, EmployeeName = "abc" });
mList.Add(new EmployeeModel { Place = "place1", Time = time4, EmployeeName = "abc" });
mList.Add(new EmployeeModel { Place = "place2", Time = time5, EmployeeName = "pqr" });
mList.Add(new EmployeeModel { Place = "place3", Time = time6, EmployeeName = "xyz" });
mList.Add(new EmployeeModel { Place = "place1", Time = time7, EmployeeName = "pqr" });
mList.Add(new EmployeeModel { Place = "place2", Time = time8, EmployeeName = "xyz" });
mList.Add(new EmployeeModel { Place = "place3", Time = time9, EmployeeName = "abc" });
我想首先对列表进行排序,以根据 EmployeeName 查找重复项。我这样做如下:-
var dupes = mList.GroupBy(x => new { x.EmployeeName }).Where(x => x.Skip(1).Any());
这给了我一组按 EmployeeName 分组的值。
我有两个字符串,即。 placeString和timeString,我想根据EmployeeName值组中的不同值(Time和Place)填写。
类似这样的:-
EmployeeName - abc
placeString:place1 timeString:time4
placeString:place1 timeString:time2
placeString:place1 timeString:time3
EmployeeName - pqr
placeString:place2 timeString:time5
placeString:place1 timeString:time7
EmployeeName - xyz
placeString:place3 timeString:time6
placeString:place2 timeString:time8
我该如何解决这个问题?任何帮助将不胜感激。
【问题讨论】:
-
这和排序有什么关系?
-
如果你在 mvc 中做,你可以尝试添加一个包含员工姓名和地点和时间列表的列表。
-
你不必创建匿名类型。
new { x.EmployeeName }改成x.EmployeeName -
还有
Where(x => x.Skip(1).Any())的逻辑是什么?这对我来说毫无意义。 -
@M.kazemAkhgary 如果你手里有一张桌子,并且你想知道你是否还有剩余的一张牌,你会数所有的牌以得到答案吗?说真的,这都是关于性能或冗余的,否则使用你的逻辑,为什么
Any和All而不仅仅是Count
标签: c# linq list duplicates