我無法得到這個工作。狀態字段在某些場合是空的,我試圖讓結果返回「 - 」,如果它是空的或不存在。空Linq值
var CusipFields = from c in xml.Descendants("LISTARRAY")
orderby c.Element("ASKYIELD").Value descending
select new BondData()
{
CUSIP = c.Element("CUSIP").Value,
Description = (string)c.Element("ISSUER").Value,
Maturity= c.Element("MATURITYDT").Value,
AskYield = float.Parse(c.Element("ASKYIELD").Value),
State = (string)c.Element("STATE").Value ?? "--"
}
;
這只是不想工作。我得到的錯誤是:
NullReferenceException未處理。 {「對象引用未設置爲對象的實例。」}
我知道它不存在。我認爲如果c.Element(「STATE」)的值爲?? "--"
將返回「 - 」。
我可以訴諸修改聲明:
var CusipFields = from c in xml.Descendants("LISTARRAY")
orderby c.Element("ASKYIELD").Value descending
select c;
foreach(var t in CusipFields)
{
switch(t.name)
{
}
}
但我認爲這是比較慢。而不是我想要的。
非常感謝。你能解釋爲什麼它以這種方式工作嗎?如果我將Element(c.element(「STATE」))傳遞給State作爲null,與傳遞也是null的元素值相比,爲什麼這會起作用? – Patrick 2011-02-25 16:01:21
您的XML數據不包含「STATE」元素。因爲'c.Elemet(「STATE」)'會返回'null'。在那個'null'實例上,你試圖訪問'Value'屬性。這是行不通的。 – 2011-02-25 16:03:16
有道理,工作起來,我只是假設它會將null識別爲null,而不管它是對象還是對象的值。 – Patrick 2011-02-25 16:04:50