2009-09-14 5 views
0

Если у вас есть заполненная переменная IQueryable.Как добавить пустую строку в IQueryable?

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

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

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

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

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

+0

@Fredou: На всякий случай вы не смотрите на комментарии - сейчас я отредактировал свой ответ. –

ответ

1

Ну, если вы счастливы, чтобы преобразовать его в 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 раз, но я могу ошибаться.)

EDIT : Я добавил звонок на AsEnumerable() на основе комментариев. В основном вызов AsEnumerable означает: «Я закончил бит SQL, а остальное в процессе».

+0

DAMNIT SKEET! Быстрее и с кодом! Я собирался вскрыть LINQpad и отредактировать свой ответ, но забудьте об этом сейчас! – Will

+0

, в конце концов, я использовал toList, потому что решение concat дало мне эту ошибку: «Локальная последовательность не может использоваться в LINQ to SQL для реализации операторов запроса, кроме оператора Contains()». сразу после того, как я что-то делаю с переменной IEnumerable – Fredou

+0

Я должен был указать linq-to-sql, а не linq в теге, извините – Fredou

1

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

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

Смежные вопросы