2012-05-24 80 views
2

我正在使用一個外部庫,它返回IEnumerable。收到它們後,我想添加一些模型到最後。這似乎只有在使用IList或其他收藏時纔有可能。所以當我試圖使用.ToList()方法將IEnumerable轉換爲列表時,它會返回IEnumerable。那不是我所期望的?我正在使用.ToList()是否正確?或者還有什麼可以解決我的問題?C#使用.ToList()將IEnumerable轉換爲IList?

這是我的代碼至今:

IList<Models.Browser.Language> languages = GetLanguages(dateDrom, dateTo).ToList(); 
IList<Models.Browser.Language> primaryItems = languages.Take(10); 

最後一行產生一個錯誤說:提前 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Bogus.Models.Browser.Language>' to 'System.Collections.Generic.IList<Bogus.Models.Browser.Language>'. An explicit conversion exists (are you missing a cast?)

謝謝!

回答

22

languages值是一個List<>的參考,但隨後你打電話Take(10)上,這返回一個列表。

只動ToList()電話:

IEnumerable<Models.Browser.Language> languages = GetLanguages(dateDrom, dateTo); 
IList<Models.Browser.Language> primaryItems = languages.Take(10).ToList(); 

或者只是做了一個電話:

var primaryItems = GetLanguages(dateDrom, dateTo).Take(10).ToList(); 

此外,這是不完全正確的:

後,我有收到他們我想添加一些模型到最後。

另一種方法是使用Concat。例如:

var items = GetLanguages(dateDrom, dateTo).Take(10).Concat(fixedItems); 
+0

感謝您的瘋狂快速aswer。它現在按預期工作。非常感謝您的幫助! –

相關問題