Как я могу разделить список или IEnumerable на более мелкие списки размером N?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу разделить список или IEnumerable на более мелкие списки размером N?

Сообщение Anonymous »

У меня много флажков, сейчас я хочу разместить их в 3 столбцах с элементом div, содержащим каждый столбец.

Однако я очень капризен и, возможно, завтра захочу разместить их в 10 или 20 столбцах, возможно, я захочу повернуть их, чтобы они были строками или любым другим типом элемента div.

Пример для 3 столбцов:

Код: Выделить всё

Checkbox # 1
Checkbox # 2
Checkbox # 3

Checkbox # 4
Checkbox # 5
Checkbox # 6

Checkbox # 7
Checkbox # 8
Checkbox # 9

Сначала я попытался сделать это, используя три цикла while, как показано ниже:

Код: Выделить всё

@{
int i = 0;
IEnumerable bar = new List(){foo1,foo2,foo3,foo4,foo5,foo6};
}

while (i < bar.Count() / 3)
{
baz = bar.ElementAt(i);
@baz.DisplayText
i++;
}

@while (i < bar.Count() * 2 / 3)
{
baz = bar.ElementAt(i);
@baz.DisplayText
i++;
}

@while (i < bar.Count())
{
baz = bar.ElementAt(i);
@baz.DisplayText
i++;
}

Это прекрасно работает, но становится очень некрасиво, если я хочу использовать более трех столбцов. Это уже довольно некрасиво, если честно. Это также не позволяет легко изменить количество столбцов. Его также можно изменить на циклы for, каждый из которых начинается с разного значения (0,1,2 соответственно) и увеличивает i на 3, но это все равно 3 цикла.

Я также пытался сделать это в одном цикле, используя такой оператор модуля (псевдокод):

Код: Выделить всё

i = 0
foreach(checkbox in list)
{
if(i % numberOfColumns == 0)
{
createNewRow()
}
placeCheckBox()
i++
}
Это, на мой взгляд, гораздо более кратко и читабельно. Однако это дает огромное количество разделов строк, что не очень хорошо подходит для моей цели. Также существует проблема с размещением флажка внутри div. Два вышеприведенных решения можно объединить для создания столбцов, а не строк, что кажется лучше, но все равно имеет те же проблемы, что и второе решение.

Я считаю, что должно быть много более простой и лучший способ сделать это без необходимости жестко запрограммировать количество столбцов, поскольку никто не хочет писать 20 таких базовых циклов while.

Итак, существует ли расширяемый и лаконичный способ создания HTML-тегов для каждого элемента в списке, разделенном на несколько разделов? Если да, то что это?

Подробнее здесь: https://stackoverflow.com/questions/366 ... -of-n-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Разделить список на более мелкие списки (разделить пополам)
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Разделить список на более мелкие списки и затем передать их в несколько потоков.
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как я могу разделить (разделить, разделить) список на основе условия?
    Anonymous » » в форуме Python
    0 Ответы
    110 Просмотры
    Последнее сообщение Anonymous
  • Разделить строку на более мелкие строки по переменной длины
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Разделить строку на более мелкие строки по переменной длины
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»