c#从Linq返回的空值
当前有一个列表,您可以通过用户输入将客户详细信息添加到该列表中。随后在软件中,我使用linq搜索列表,以查找列表中是否已经存在客户详细信息。我目前有一个if语句(如下所列),它从linq获取返回值,并显示客户是否已经在列表中存储了详细信息c#从Linq返回的空值,c#,linq,C#,Linq,当前有一个列表,您可以通过用户输入将客户详细信息添加到该列表中。随后在软件中,我使用linq搜索列表,以查找列表中是否已经存在客户详细信息。我目前有一个if语句(如下所列),它从linq获取返回值,并显示客户是否已经在列表中存储了详细信息 Customer cust = finder.list.where(c => c.ID.ToString() == textBox.txt).FirstOrDefault(); if(cust.ID == null) {
Customer cust = finder.list.where(c => c.ID.ToString() == textBox.txt).FirstOrDefault();
if(cust.ID == null)
{
lstDisplay.items.add("Customer details not stored")
}
我遇到的问题是,一旦程序到达if语句并出现错误:“对象引用未设置为对象的实例”,程序就会崩溃
火车是空的
如何处理返回的null
如果null返回到值train.ID,我想将其与If语句中的null进行比较。如果为空,则我希望能够像以前一样显示消息框您需要检查
cust
是否为空
if(cust?.ID == null)
{
lstDisplay.items.Add("Customer details not stored")
}
要查看cust.ID是否为null,需要检查整个cust对象是否为null简单解决方案:检查
cust
是否为null是否知道customer表中的ID字段可为null?i、 例如,“int?”(使用问号)这是无效的Linq…其中
是大写的。同样在Where
条件下,如果ID==null
,那么在到达if
语句之前,这将失败:c.ID.ToString()
。因此,您也应该更改该部分:.Where(c=>c.ID?.ToString()==textBox.txt)
在cust
上检查null
就足够了:如果(cust==null)
@JuanR应该是,您会认为ID是必填字段:)@JuanR是的,在OP的原始代码中,如果ID==null
,然后Where
条件中的c.ID.ToString()
调用将在语句到达之前失败,if
语句也应该大写。。。