c# - C# 类没有为 LINQ 查询传递值
问题描述
希望这是有道理的。我有一个名为ShippingCont
在这堂课中,我有一个如下所示的 LINQ 连接。我想使用这个类来调用给定的表并获取所有必要的字段,而不是调用数据库的单个查询。
public static ShippingContainerDataContext shippingContainer = new ShippingContainerDataContext();
public static SHIPPING_CONTAINER sc2 = shippingContainer.SHIPPING_CONTAINERs.FirstOrDefault(a => a.CONTAINER_ID == _externalContainerId);
private string _containerId = sc2.COMPANY;
private string _company = sc2.COMPANY;
public string fromProgram
{
get { return _externalContainerId; }
}
public string ContId
{
get { return sc2.CONTAINER_ID; }
set { _externalContainerId = value; }
}
public string _ContainerId
{
get { return sc2.CONTAINER_ID; }
set { _ContainerId = value; }
}
public string _Company
{
get { return sc2.COMPANY; }
set { _company = value; }
}
当我尝试将值传递给_externalContainerId
类中的。LINQ 查询不返回任何记录,我收到错误消息Object reference not set to an instance of an object
。
我知道 LINQ 会返回数据,因为当我在 LINQ 查询中手动提供容器 ID(如下所示)时,我会得到一个结果集。
public static SHIPPING_CONTAINER sc2 = shippingContainer.SHIPPING_CONTAINERs.FirstOrDefault(a => a.CONTAINER_ID == "00008878742000004419");
该值是从主程序传递的,如下所示。
ShippingCont sc = new ShippingCont("00008878742000004419");
我知道该值正在传递,因为当我调用fromProgram()
该值时会打印出来。
我究竟做错了什么?
解决方案
由于 sc2 是静态的,查询可能在设置 _externalContainerId 之前运行(_externalContainerId = null),这将返回空。然后它将在程序期间保持为空,因为它没有被重新计算,当您尝试访问成员时会导致错误。由于您在构造函数中设置了 _externalContainerId,因此您也可以在其中放置 sc2 的分配。例如
public ShippingCont(string id)
{
this._existingContainerId = id;
sc2 = shippingContainer.SHIPPING_CONTAINERs.FirstOrDefault(a => a.CONTAINER_ID == _externalContainerId);
}
public static ShippingContainerDataContext shippingContainer = new ShippingContainerDataContext();
public SHIPPING_CONTAINER sc2;
private string _containerId = sc2.COMPANY;
private string _company = sc2.COMPANY;
public string fromProgram
{
get { return _externalContainerId; }
}
public string ContId
{
get { return sc2.CONTAINER_ID; }
set { _externalContainerId = value; }
}
public string _ContainerId
{
get { return sc2.CONTAINER_ID; }
set { _ContainerId = value; }
}
public string _Company
{
get { return sc2.COMPANY; }
set { _company = value; }
}
推荐阅读
- vue.js - Vue 组件错误:Expected Function, got String
- sql - 将查询合并为一个查询
- typescript - 有没有使用接口创建类模型的感觉?
- php - 如果只有 1 if 2 else if 1 else if 1 如何使 5 有条件?
- swift - BGProcessingTask 是如何工作的?
- node.js - 如何编写参数以从数组中更新对象中特定属性的值?
- d3.js - 如何限制d3中的可拖动区域?
- reactjs - 使用 React-Router 显示细节组件
- database - 对可空结构字段使用 nil 或 Null* 更好
- java - jar libs\commons-compress-1.18.jar 有一个主类 org.apache.commons.compress.archivers.Lister 与声明的 main 不匹配