как добавить пустую строку в IQueryable?
-
07-07-2019 - |
Вопрос
Если бы у вас был заполненный IQueryable ( подлежащий запросу) переменная.
Как бы вы добавили новую пустую запись в конец этого списка?
Вот что я должен сделать:
- если есть 2 записи, добавьте 3 пустых записи
- если имеется 0 записей, добавьте 5 пустых записей
- если есть 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) для результата. Кажется, излишним и не короче, хотя.