LINQ查询中的nullarguint异常
本文关键字:nullarguint 异常 查询 LINQ | 更新日期: 2023-09-27 18:11:59
以下查询在某些情况下可能抛出NullArgumentException,因为m_SelectedPayabes
集合中的项可能为空。如何修改查询,使其在遇到空引用时不会抛出NullArgumentException
?
var myPayables = from payable in m_Payables
where !(from o in m_SelectedPayabes select o.PBLE.PAYABLEID).Contains(payable.PBLE.PAYABLEID)
select payable;
您可以在查询前添加以下代码:
if (m_SelectedPayabes == null)
m_SelectedPayabes = new List<...>();
或用适当的条件包围整个查询,如:
if (m_SelectedPayabes != null)
{
// your query
}
应该可以了。它将检查m_SelectedPayabes.PBLE.PAYABLEID
是否与m_Payables.PBLE.PAYABLEID
匹配,并选择符合的m_Payables
。
if (m_SelectedPayabes!= null && m_Payables!=null){
var x = m_Payables.Where(o => m_SelectedPayabes.Any(oo => oo.PBLE!=null && oo.PBLE.PAYABLEID == o.PBLE.PAYABLEID));
}
您可以排除null:
var myPayables = from payable in m_Payables
where !(from o in m_SelectedPayabes
where o != null
select o.PBLE.PAYABLEID).Contains(payable.PBLE.PAYABLEID)
select payable;
或者用其他东西替换空(假设o.PBLE.PAYABLEID
是一个整数):
var myPayables = from payable in m_Payables
where !(from o in m_SelectedPayabes
select o == null ? 0 : o.PBLE.PAYABLEID).Contains(payable.PBLE.PAYABLEID)
select payable;
把你的
from o in m_SelectedPayabes select o.PBLE.PAYABLEID
from o in m_SelectedPayabes.Where(sp=> sp!=null) select o.PBLE.PAYABLEID