George Swan
Ответ Ричарда лучше всего подходит для ваших нужд. Возможно, в памяти будет проще использовать перечислимое число, если у вас есть много данных для обработки. В этом примере используется Linq
сгруппировать данные в наборы, каждый из которых содержит 16 значений. Он использует IEnumerable<int>
поскольку его легко инициализировать. Я не предлагаю вам использовать его, но он может быть полезен в других подобных приложениях
static void Main(string[] args)
{
var x = Enumerable.Range(0, 128);
int s = -1;
var sets = x.Select((v, i) =>
(Set: (i % 16 == 0) ? ++s : s, Value: v))
.GroupBy(a => (a.Set), (key, values) => (key, values));
foreach (var (key, values) in sets)
{
Console.WriteLine(key);
string spacer = string.Empty;
foreach (var (Set, Value) in values)
{
Console.Write($"{spacer}{Value}");
spacer = spacer == string.Empty ? ", " : spacer;
}
Console.WriteLine();
}
Console.ReadLine();
}
George Swan
'я' является значением индекса и 'V' имеет значение. Таким образом, для перечисляемого 1,5,10, если i=1, v равно 5
Метод Select приводит к перечислению кортежей значений (int Set, int Value). Переменная set увеличивается каждый раз, когда i mod 16 равен 0. Группа состоит из ключа и перечислимого числа значений, принадлежащих этому ключу. Метод GroupBy группирует использование переменной Set в качестве ключа в перечислимые кортежи значений, каждый из которых состоит из ключа и перечислимых значений, имеющих этот ключ.Первый цикл foreach выводит ключ, а второй цикл выводит значения, связанные с этим ключом.