C#lambda有条件地获得不同的值列表

nun*_*unu 2 c# linq lambda

我有一个用户列表,如下所示:

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" });
Run Code Online (Sandbox Code Playgroud)

在这里,我希望获得具有不同City by的不同UserIDC# lambda expression

因此,在上面的情况下,我应该得到一个List<string>只包含UserId = 11项目,因为UserId是相同的,但城市对于这两个项目是不同的.

能否告诉我如何通过C#lambda代码执行此操作.

提前致谢.

Ric*_*ard 8

就像是:

var result = users.GroupBy(u => u.UserId)
                  .Where(g => g.Select(u => u.City).Distinct().Count() > 1)
                  .Select(g => g.Key)
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

应该这样做.

它需要{UserId,City}对并转换为UserId索引的那些对的组; 然后查找组中有多个城市的情况.最后从组中取出结果的密钥.