从数据库中我得到System.Collections.Generic.IEnumerable<CustomObject>
的结果。将结果放入List<CustomObject>
可以完美地运行。现在我想只拍摄前n个对象。这就是我尝试过的:
List<CustomObject> tempList = DataBase.GetAllEntries().Cast<CustomObject>().ToList();
tempList = tempList.Take(5);
在第二行我得到了
Error CS0266 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<CustomObject>' to 'System.Collections.Generic.List<CustomObject>'. An explicit conversion exists (are you missing a cast?)
我还尝试添加OrderBy()
,仅使用ToList()
(不使用强制转换)或其组合,但每次我收到上述错误。我应该改变什么?
答案 0 :(得分:3)
在具体化(Take
)之前放置ToList
:
List<CustomObject> tempList = DataBase.GetAllEntries()
.Take(5)
.Cast<CustomObject>()
.ToList();
让实现成为最终操作。
答案 1 :(得分:2)
您的问题是tempList
是List<CustomObject>
,但.Take()
会返回IEnumerable<CustomObject>
。您只需再次致电.ToList()
即可解决问题:
tempList = tempList.Take(5).ToList();
或者,您可以在原始查询中添加.Take()
方法,以避免构建2个列表:
List<CustomObject> tempList = DataBase.GetAllEntries().Take(5).Cast<CustomObject>().ToList();