首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# lambda有条件地得到不同的值列表

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

Stack Overflow用户
提问于 2012-08-29 10:58:19
回答 3查看 22.2K关注 0票数 2

我有如下所示的用户列表:

代码语言:javascript
运行
复制
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代码来完成这一任务。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-29 11:05:12

类似于:

代码语言:javascript
运行
复制
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索引的这些对的组;然后查找组中有多个城市的情况。最后,从各小组中拿出密钥作为结果。

票数 8
EN

Stack Overflow用户

发布于 2012-08-29 11:06:01

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-08-29 11:43:40

代码语言:javascript
运行
复制
var list = users.GroupBy(Obj=>new {Obj.UserID,Obj.City}).Distinct();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12176389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档