如何在IQueryable中添加一个空行?

时间:2009-09-14 13:54:48

标签: asp.net linq-to-sql repeater

如果你有一个填充 IQueryable 变量。

如何在该列表的末尾添加新的空条目?

以下是我必须做的事情:

  1. 如果有2个条目,则添加3个空条目
  2. 如果有0个条目,则添加5个空条目
  3. 如果有5个条目,则添加5个空条目
  4. 您现在可以在 asp.net 中看到该模式以及转发器

    我应该简单地创建通用列表(。toList())并使用添加功能,还是有更好的方法来执行此操作?

2 个答案:

答案 0 :(得分: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次,但我可能错了。)

编辑:我已根据评论添加了对AsEnumerable()的调用。基本上调用AsEnumerable意味着“我已经完成了SQL位;其余的都在进行中。”

答案 1 :(得分:1)

好吧,我要列出它并使用Length属性来确定下一步该做什么。

但是,如果你不想这样做,你可以在一个有五个空条目的IEnumerable上做一个Union,然后对结果做一个Take(5)。看起来有点多余,而不是更短,tho。