4

我正在使用一个外部库,它返回一个IEnumerable. 在我收到它们之后,我想在最后添加一些模型。这似乎只有在使用一个IList或其他一些集合时才有可能。因此,当我尝试IEnumerable使用.ToList()它返回的方法将IEnumerable. 这不是我所期望的吗?我使用.ToList()正确吗?或者还有什么可以解决我的问题?

这是我到目前为止的代码:

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?)

提前致谢!

4

1 回答 1

24

的值languages是对 a 的引用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);
于 2012-05-24T10:03:32.197 回答