【发布时间】:2014-06-23 16:54:51
【问题描述】:
我正在尝试获取 quickbooks 数据库中的项目列表。我有以下 sn-p 代码:
IItemServiceRet itemServiceRet = itemRet.ItemServiceRet;
TestItem item = new TestItem();
item.Name = itemServiceRet.Name.GetValue();
item.Desc = itemServiceRet.ORSalesPurchase.SalesOrPurchase.Desc.GetValue();
item.Rate = itemServiceRet.ORSalesPurchase.SalesOrPurchase.ORPrice.Price.GetValue().ToString();
item.ItemType = "Service";
item.QBID = itemServiceRet.ListID.GetValue();
item.EditSeq = itemServiceRet.EditSequence.GetValue();
代码失败就行了:
item.Desc = itemServiceRet.ORSalesPurchase.SalesOrPurchase.Desc.GetValue();
"Object reference not set to an instance of an object"
因为 QB 数据库中的特定服务项目没有描述。我很好奇是否有一种“干净”的方法来检查空值,而不必让每一行都包含if 语句来检查GetValue() 是否返回空值?
编辑:在尝试了 Andrew Cooper 的解决方案之后:
item.Desc = itemServiceRet.ORSalesPurchase.SalesOrPurchase.Desc == null ? null : itemServiceRet.ORSalesPurchase.SalesOrPurchase.Desc.GetValue();
它仍然抛出异常:
Object reference not set to an instance of an object
如果没有描述,就好像 GetValue() 什么都不返回,这没有多大意义。
【问题讨论】:
-
item.Desc 正在寻找一个值。所以你必须做空字符串而不是null。此外,您可能必须使用简单的 If Then,而不是三元运算符。
标签: c# quickbooks qbfc