Как добавить пустую строку в IQueryable? - PullRequest
0 голосов
/ 14 сентября 2009

Если у вас есть заполненная переменная IQueryable .

Как бы вы добавили новую пустую запись в конец этого списка?

Вот что мне нужно сделать:

  1. если есть 2 записи, добавить 3 пустых записи
  2. если есть 0 записей, добавьте 5 пустых записей
  3. если есть 5 записей, добавить 5 пустых записей

Теперь вы можете видеть шаблон, и это для повторителя в asp.net .

Должен ли я просто создать универсальный список (. ToList ()) и использовать функциональность add или есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 14 сентября 2009

Ну, я бы сделал ToList и использовал бы свойство Length, чтобы определить, что делать дальше.

Но, если вы не хотите этого делать, вы можете выполнить объединение для IEnumerable с пятью пустыми записями, а затем выполнить Take (5) для результата. Кажется излишним и не короче, хотя.

1 голос
/ 14 сентября 2009

Хорошо, если вы счастливы преобразовать его в IEnumerable<T>, вы можете использовать

query.Concat(Enumerable.Repeat(new SomeRow(), 5)
     .Take(5);

Обратите внимание, что это добавит одну и ту же дополнительную строку 5 раз (а затем сократит общую сумму до 5). Это не сработает, если вам понадобится редактировать строки; для этого вам нужно что-то вроде:

query.AsEnumerable()
     .Concat(Enumerable.Range(1, 5).
                       .Select(ignored => new SomeRow())
     .Take(5);

(я не думаю есть более простой способ вызова одной и той же функции n раз, но я могу ошибаться.)

РЕДАКТИРОВАТЬ: я добавил вызов AsEnumerable() на основе комментариев. По сути, вызов AsEnumerable означает «Я закончил бит SQL; все остальное в процессе».

...