我有一个用户列表,如下所示:
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代码执行此操作.
提前致谢.
就像是:
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索引的那些对的组; 然后查找组中有多个城市的情况.最后从组中取出结果的密钥.
| 归档时间: |
|
| 查看次数: |
21638 次 |
| 最近记录: |