2009-09-14 42 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倍的更簡單的方法,但我可能是錯的。)

編輯:我已根據評論添加了致電AsEnumerable()的電話。基本上調用AsEnumerable意味着「我已經完成了SQL位;其餘的正在處理中」。

+0

DAMNIT SKEET!更快,並與代碼!我要彈出打開LINQpad並編輯我的答案,但現在忘記它! – Will

+0

最後,我用toList,因爲concat解決方案給了我這個錯誤:「除了Contains()運算符,本地序列不能用於查詢運算符的LINQ to SQL實現。我做了IEnumerable變量 – Fredou

+0

我應該有指定的LINQ到SQL東西之後,不能在標籤LINQ,對不起 – Fredou

1

那麼,我會列出它並使用Length屬性來確定下一步該做什麼。

但是,如果你想不做到這一點,你可以在一個IEnumerable五個空項做一個聯盟,然後做的結果採取(5)。似乎有點多餘,並沒有更短,壽。