繁体   English   中英

即使 IEnumerable 中没有 null,LINQ 上的空引用异常

[英]Null reference Exception On LINQ even though there's no null inside IEnumerable

我在.NET 6 之上构建了一个抓取程序

正如您在图像中看到的那样,我有一个预先填充的列表。 我想从其中的每条记录中提取 AmazonBookId。 通常我会使用 LINQ Select。

但是我得到

空引用异常

这里。 我尝试调试列表以查看 NULL 的来源。无处(请参阅屏幕截图中的 QuickWatch 窗口)。

我唯一注意到的是一个 ID 重复了两次。 所以我也在Select()之前尝试了Distinct(x=>x.AmazonBookId) ) 但仍然没有运气。

我无法理解 Null 发生在哪里。 任何指针?

笔记:

  • 我可以清楚地看到调试器中的任何对象和 AmazonBookId 都不是空的。
  • 我没有使用任何线程来考虑同步维度。
  • 我不想使用 for 循环作为替代方案。 我试图了解 NULL 传播的原因和位置
  • 我试过使用'? 空传播运算符也没有运气。
  • 不仅 Select、Where、Distinct 和大多数 LINQ 函数都抛出此错误,而且调试器显示它是一个有效的列表。 我很困惑

在此处输入图像描述

zLibBooks 中只有 5 个项目。 所有项目都有有效的 ID。

查看完整的 QuickWatch 窗口在此处输入图像描述

我记得有一个像你这样的场景。 尽管 quickwatch 没有显示完整的 zLibBooks,但从我所看到的看起来像一个 IEnumerable 数组。

Categories.Select(c => c.Id).ToList();

给出一个列表列表 (List<List>)。

Categories.SelectMany(c => c.Id).ToList();

可能会给你你想要的。 一探究竟。

我在这里分享了我在类似情况下的建议

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM