我有如下所示的用户列表:
List<User> users = new List<User>();
users.Add(new User(){ UserId = "11", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "11", City = "Newyork" });
users.Add(new User(){ UserId = "14", City = "Virginia" });
在这里,我想通过获得具有不同城市的C# lambda expression
不同的用户I
因此,在上面的情况下,我应该得到一个List<string>
,它只包含UserId = 11项,因为UserId是相同的,但是城市对于这两个项都是不同的。
请您告诉我如何通过C# lambda代码来完成这一任务。
提前谢谢。
发布于 2012-08-29 11:05:12
类似于:
var result = users.GroupBy(u => u.UserId)
.Where(g => g.Select(u => u.City).Distinct().Count() > 1)
.Select(g => g.Key)
.ToList();
应该这么做。
它获取{UserId、City}对,并将其转换为由UserId索引的这些对的组;然后查找组中有多个城市的情况。最后,从各小组中拿出密钥作为结果。
发布于 2012-08-29 11:06:01
from u in users group u.City by u.UserId into grp //group on the id
where grp.Distinct().Count() > 1 // we only want those with more than one distinct city
select grp.Key //we want the key
发布于 2012-08-29 11:43:40
var list = users.GroupBy(Obj=>new {Obj.UserID,Obj.City}).Distinct();
https://stackoverflow.com/questions/12176389
复制相似问题