c# - .Single(c.=>c.Id==id) 方法返回 NULL
问题描述
我对下面的代码有疑问。第一次搜索 (loadToUpdate1) 正在工作。它返回值。CustomerId 也有一个值(在调试模式下为 4)。具有此 ID 的客户存在。它在那里(在调试模式下,我可以在客户列表中看到这个 ID 为 4 的客户)。但是为什么 customerToUpdate1 返回 NULL?起初我认为它们(Id 和 CustomerId)是不同的数据类型。但它们都是整数。为什么 .Single(c => c.Id == customerId) 不起作用?任何想法?UPD。我尝试了 First 而不是 Single,但结果是相同的(NULL)。
var loadToUpdate1 = _context.LoadConfirmations.Include(c=>c.Customer).Single(c => c.Id == loadFormViewModel.LoadConfirmation.Id);
var customerId = loadToUpdate1.CustomerId;
var customerToUpdate1 = _context.Customers.Single(c => c.Id == customerId);
解决方案
在您的调试图像中,您实际上还没有执行查询。您需要进入下一行以someCustomer
设置 的值。
IfsomeCustomer
可以为 null ,而不是您需要使用SingleOrDefault
.
First
将返回 1:N 的第一个结果。如果有 0 个结果则抛出异常
FirstOrDefault
将返回 null,或 0:N 的第一个结果
Single
将返回 1:1 的第一个结果。如果有 0 个或多于 1 个结果,则引发异常
SingleOrDefault
将返回 null,或 0:1 的第一个结果
推荐阅读
- javascript - 如何通过 DoubleClick Studio 中的 js 文件映射资源?
- powershell - 在嵌套 PSObject 属性上重载 ToString 的问题
- javascript - 如何将对象数组中的数字加倍?
- java - Salesforce:无需登录即可使用哪个 API?
- ios - 形状,多边形,未在 GoogleMaps swift 上显示
- python - 如何将每个句子拆分为单个单词和每个句子的平均极性分数并附加到数据框中的新列中?
- r - 为什么 spread() 会创建一个仅限 NA 的列?
- javascript - ReactJS 多级下拉菜单
- typescript - 类型错误:uuid_1.v5 不是函数
- ansible - 仅打印失败的任务 - Ansible