c# - 具有重复项的 LINQ 联合
问题描述
假设我们有以下三个列表:
{ 1, 2, 2, 3 }
{ 2, 3, 3, 4 }
{ 2, 3, 4, 5, 5, 5 }
然后我们如何将上面的内容转换为一个列表,让每个项目重复它在列表中找到的最大次数。即,
{1, 2, 2 (Found twice in list 1), 3, 3 (Twice in list 2), 4, 5, 5, 5 (Thrice in list 3)}
我可以通过循环实现上述目标,但是,我正在寻找一种可能已经存在的 LINQ 方法。
这个问题类似于在python中列出具有重复项的联合
解决方案
一行中的Linq
int[][] items = { new[]{ 1, 2, 2, 3 }, new[] { 2, 3, 3, 4 }, new[] { 2, 3, 4, 5, 5, 5 } };
var result = items.SelectMany(x => x.GroupBy(y => y)).GroupBy(x => x.Key).Select(x => x.OrderByDescending(y => y.Count()).First()).SelectMany(x => x);
推荐阅读
- leaflet - 如何在缩放时反转传单折线箭头自动调整大小?
- html - 如果仅通过单个项目,EJS 不显示值
- c# - 如何在 ASP.NET Core 3.1 中启用多重身份验证?
- c++ - 如何测试c++代码是否有编译错误
- typescript - 打字稿存根中的诗农
- python - Celery - 异常重新引发信息
- channel - grpc-java,方法可用的字段名:ManagedChannelBuilder.defaultServiceConfig()
- python - 如何将弹出消息从 django 中的应用程序发送到同一 django 项目中的帐户应用程序
- qt - 将鼠标悬停在地图上时突出显示国家/地区
- docker - maven:来自 gitlab-runner 的最新图像,带有 docker 执行器“无法连接到 gitlab 连接被拒绝”,使用 docker-compose