c# - 如何按长度为 10、0-10、11-20 等对数组进行分组
问题描述
我正在尝试按长度对字符串数组进行分组,即 1-10、11-20、21-30,然后使用 Linq/C# 对它们进行排序。我在想我可以循环并执行一个 if 语句将它们分解成单独的数组,然后将它们重新组合成一个。虽然这有一种不好的感觉 - 就像 Group By 是一个更好的选择,但我无法弄清楚到底如何。
解决方案
使用辅助范围数组,您可以对列表进行分组,然后对其进行排序
string[] list = new[] { "12345", "12", "12", "55", "12345", "1", "22", "333" };
var range = new[] { 2, 4, 5 };
var grouppedItems = list.GroupBy(s => range.First(i => i >= s.Length));
var sortedItems = grouppedItems.OrderBy(group => group.Key);
推荐阅读
- sql - SQL Queue 在 2 周内获得工作量 [SQL Server]
- azure-logic-apps - 向使用 LogicApps 连接器创建的新 OneNote 页面添加“标题”?
- php - 如何获取点击公司链接的电子邮件?邮件黑猩猩
- java - 验证文本字段意外结果
- sql - 表“列表”缺少 FROM 子句条目
- .net - .NET 客户端库是否可以配置为使用 CNAME 进行 Kerberos 身份验证?
- c# - 无法解析 http 数据包编码部分
- javascript - javascript中的var需要多少内存以及何时分配?
- sql-server - 如何在 SSIS 包内的脚本中引用用户变量
- asp.net-mvc - 在 Kendo Grid 中绑定复选框时出错