使用 c# devkit,我如何访问发票上的行 ItemID?
我的响应 xml 有一个部分如下所示:
<Line>
<Desc>TestItem</Desc>
<Amount>66.00</Amount>
<Taxable>false</Taxable>
<ItemId idDomain="QBO">3</ItemId>
<UnitPrice>33</UnitPrice>
<Qty>2</Qty>
<ServiceDate>2013-01-07-08:00</ServiceDate>
</Line>
并且可以使用 devkit 从中提取数据,如下所示:
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
foreach (var invoiceFound in customerInvoicesWithinDateRange)
{
foreach (var line in invoiceFound.Line)
{
things += line.Desc + " <br> ";
things += line.Taxable.ToString() + " <br> ";
things += line.ServiceDate.ToShortDateString() + " <br> ";
things += line.Amount.ToString() + "<br>";
}
}
但是对象中没有 line.ItemId,line.Qty 也没有 line.UnitPrice。
我知道当我将 line.Items 对象设置为 ItemsChoiceType2 对象时,但是当我尝试访问 line.Items 对象时,我得到“NullReferenceException:对象引用未设置为对象的实例”。
我缺少哪些步骤来获得那个难以捉摸的“3”?
谢谢
编辑:@Peter 当我这样做时:
List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>();
var quantity = customerInvoicesWithinDateRange[0].Line[0].Items[Array.IndexOf(customerInvoicesWithinDateRange[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)];
我得到“System.ArgumentNullException:值不能为空。” 在第 2 行。我认为 customerInvoicesWithinDateRange[0].Line[0].ItemsElementName 为空。在我的 foreach 循环中它也是空的。
编辑编辑:
nm,我实际上在查询中有一张发票,我猜它没有任何行。将其包装在以下内容中解决了最后一个障碍:
if (customerInvoicesWithinDateRange[0].Line[0].Items != null)
再次感谢您的帮助。