Cor*_*mes 4 c# linq entity-framework
我收到一条错误消息,指出“非静态方法需要一个目标”
这是导致我出错的代码,有人可以对此有所了解吗?
//TODO: Error, Non static method requires a target.
var orderItem =
_context.PurchaseOrderItems.FirstOrDefault(
p => p.JobReference == item.JobReference && p.ItemNumber == item.ItemNumber);
return _context.DeliverySchedules.Include(d => d.PurchaseOrderItem)
.Where(d => d.PurchaseOrderItem.Id == orderItem.Id)
.ToList();
Run Code Online (Sandbox Code Playgroud)
FirstOrDefault如果那里没有返回查询结果,该方法可能会返回空值:
var orderItem = _context.PurchaseOrderItems.FirstOrDefault(
p => p.JobReference == item.JobReference && p.ItemNumber == item.ItemNumber);
Run Code Online (Sandbox Code Playgroud)
由于orderItem.Idthrows NullReferenceExceptionwhenorderItem为 null,它将传播到TargetException所提到的LINQ throwing (有关更多信息,请参阅此帖子和此帖子)。
因此,您需要orderItem通过将第二个 LINQ 查询修改为这个查询来检查空值的存在:
return _context.DeliverySchedules.Include(d => d.PurchaseOrderItem)
.Where(d => (orderItem != null && d.PurchaseOrderItem.Id == orderItem.Id))
.ToList();
Run Code Online (Sandbox Code Playgroud)
注:空检查必须需要检索属性之前发生Id的orderItem防止NullReferenceException。
作为替代方案,if可以在不修改第二个查询的情况下使用检查空值的条件:
if (orderItem != null)
{
return _context.DeliverySchedules.Include(d => d.PurchaseOrderItem)
.Where(d => d.PurchaseOrderItem.Id == orderItem.Id)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7474 次 |
| 最近记录: |