我们在 megaItems 中有4个ItemInfo
:
IEnumerable<ItemInfo> megaItems;
在执行以下某行之后,我们有0 ItemInfo
s
var array = megaItems.ToArray();
//var array = megaItems.Cast<ItemInfo>().ToArray();
return array;
如何以正确的方式进行此转换?
答案 0 :(得分:4)
Cast(与OfType不同)不会删除项目 - 所以我们可以假设它不是那样。我的猜测是“大型项目”实际上是在后续迭代期间报告不同的结果(非常可能;从您的链接,可能迭代它们会导致它们被加载 - 因此不再是非加载的)。我想如果我们这样做:
var x = megaItems.ToArray();
var y = megaItems.ToArray();
然后(我的猜测)x的长度为4,y的长度为0.如果是这种情况,则只需避免两次读取,或者第一次缓冲输出。
答案 1 :(得分:1)
覆盖GetHashCode()
类的Equals(object obj)
和ItemInfo
可能会解决问题
答案 2 :(得分:0)
数组很可能不是空的。尝试使用这些项目而不是快速观看。以下是MSDN
的引用此方法通过使用延迟执行来实现。眼前的 返回值是存储所有信息的对象 需要执行操作。此方法表示的查询 在通过调用对象枚举对象之前不会执行 直接使用GetEnumerator方法或在Visual C#或For中使用foreach 每个都在Visual Basic中。