Вопрос

Если бы у вас был заполненный IQueryable ( подлежащий запросу) переменная.

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

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

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

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

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

Это было полезно?

Решение

Что ж, если вы с удовольствием преобразуете его в 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-бит;остальное делайте в процессе ".

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top