c# - 仅在不为空时才从列表中获取对象
问题描述
仅当 A 不为空时,如何从 A 中获取对象?这是我正在尝试的,但我意识到q != null
将永远是真的,因为 A 是一个列表。
A.Where(q => q.Id == B.Id && q != null)
我只需要在一行中进行选择,因为这是在 Select 语句中。
解决方案
如果您的列表为空,A.Where(...)
将返回 0 个结果。因此,如果列表为空,则您不会从列表中获取任何项目。
关于您关于q != null
始终为真的评论,如果您的列表包含引用类型,这是不正确的,因为您的列表可以包含空值:
List<string> A = new List<string>();
A.Add(null);
这意味着在这种情况下您的子句将失败,因为您的条件顺序错误(应该首先进行空检查):
A.Where(q => q != null && q.Id == B.Id);
你也可以这样写来使用空条件运算符,但请注意,如果B.Id
也是空的,它将匹配:
A.Where(q => q?.Id == B.Id);
在上面的示例中,调用A.Where(q => q != null && q.Id == B.Id).ToList()
将产生一个包含 0 个项目的列表(因为源列表不包含任何匹配的元素)。
推荐阅读
- javascript - 使用 reactjs 下载文件无法正常工作(使用 axios)
- google-app-engine - 在 GEE 中将 GPM 每小时数据汇总到每天
- bash - 将命令的文本响应转换为二进制 0 或 1
- go - 更新,选择原子。戈尔姆
- python - 如何在熊猫数据框中迭代行以查找特定条件
- python - Django 应用程序在 Google App Engine 上冻结
- python - 计算以每个数据点为中心的固定半径球内数据点数量的有效方法
- python - Tensorflow 无法在 Windows 和 pycharm 上运行
- typescript - 为什么 TypeScript 渐进式类型应该停止编译这个有效的代码?
- vba - 在本地目录中创建文件夹后保存 Outlook 附件