c# - 使用 LINQ 在数组元素内部进行分组
问题描述
例如:
var a = new { Key = new[] {1, 2} ... };
var b = new { Key = new[] {2, 3} ... };
var c = new { Key = new[] {3} ... };
我想要一个 LINQ 查询,它会在下面得到结果new [] {a, b, c}.GroupByWithArray(x => x.Key)
Key 1: a
Key 2: a, b
Key 3: b, c
解决方案
这似乎是您想要的最合乎逻辑的:
var a = new { Key = new[] { 1, 2 } };
var b = new { Key = new[] { 2, 3 } };
var c = new { Key = new[] { 3 } };
var values = new[] { 'a', 'b', 'c' };
var result =
new[] { a, b, c }
.Zip(values, (keys, value) => new { keys, value })
.SelectMany(x => x.keys.Key, (x, key) => new { key, x.value })
.GroupBy(x => x.key, x => x.value);
var output =
String.Join(
Environment.NewLine,
result.Select(r => $"Key {r.Key}: {String.Join(", ", r)}"));
这给出了:
关键1: 键 2:a,b 键 3:b,c
现在,我不知道您...
的问题是什么意思,但是如果我只是假设您的意思是列表可以更长,那么这不会改变任何事情。
推荐阅读
- cypress - 赛普拉斯游乐场找不到工作选择器
- java - Vert.X 微服务:多数据库访问或使用请求-回复
- image-processing - Tesseract 需要 10 秒来识别最简单的图像,我做错了什么?
- spring - 验证 RequestBody 和 Param 中的所有字符串字段
- java - Android 上的 Facebook 新闻源刷新
- c# - 无法从 xamarin android 调用 firebase 云功能
- java - Java中的Linked Map,如果键的顺序不同则不相等
- powershell - 在 Azure Runbooks 中克隆 Azure 存储库
- php - Mysqli 查询结果到变量
- docker - 从 kubernetes 拉取 docker hub 镜像