私はXMLからのセクションを繰り返すことによって、XMLファイルからデータを読み込み、一覧でPurchaseOrderItemsにデータを取り込むためにしようとしているPurchaseOrderItem読み込みXMLと同時に、クラスをインスタンス化
public class PurchaseOrderItem
{
public Int64 PONumber { get; set; }
public string Description { get; set; }
public string UM { get; set; }
public int QTY { get; set; }
public double Cost { get; set; }
}
というクラスを持っています。しかし、以下のコードを試してみると、 "オブジェクト参照がオブジェクトのインスタンスに設定されていません"というエラーメッセージが表示されます。 私は貧しいOOPの知識のために何かが足りないと確信しています。誰かがこの問題の原因を教えてくれますか?
PurchaseOrderItems =
(from purchaseOrderItem in PO.Descendants("PurchaseOrder").Elements("ProductLineItem")
select new PurchaseOrderItem
{
PONumber = PONumber,
Description = purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("comments").Value.Trim(),
QTY = Convert.ToInt16(purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("OrderQuantity").Element("requestedQuantity").Element("ProductQuantity").Value.Trim()),
UM = purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("GlobalProductUnitOfMeasureCode").Value.Trim(),
Cost = Convert.ToDouble(purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("requestedUnitPrice").Element("FinancialAmount").Element("MonetaryAmount").Value.Trim()),
}).ToList<PurchaseOrderItem>();
なぜ私は二重ではなく通貨の値に小数点を使うべきか尋ねることができますか? –
@SiHyungLee:データを失うのが好きですか? ;)小数は、小数点以下を正確に表すことができるように設計されています。 Doubleは*バイナリ*表現を代わりに使用するので、 "0.1"のようなものは正確に表現できません。詳細はhttp://csharpindepth.com/Articles/General/FloatingPoint.aspxおよびhttp://csharpindepth.com/Articles/General/Decimal.aspxを参照してください。 –
私は二重も小数点を扱うことができ、小数点よりも大きな容量を持っていました。私の間違い。ありがとうございました。 –