首页 > 解决方案 > 如何按长度为 10、0-10、11-20 等对数组进行分组

问题描述

我正在尝试按长度对字符串数组进行分组,即 1-10、11-20、21-30,然后使用 Linq/C# 对它们进行排序。我在想我可以循环并执行一个 if 语句将它们分解成单独的数组,然后将它们重新组合成一个。虽然这有一种不好的感觉 - 就像 Group By 是一个更好的选择,但我无法弄清楚到底如何。

标签: c#linqapi

解决方案


使用辅助范围数组,您可以对列表进行分组,然后对其进行排序

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);

推荐阅读