2013-08-21 63 views
0

在下面的查詢:LINQ XML總和的IEnumerable <string>

var foundNode3 = (from e in root.Descendants(df + "Inv") 
      where e.Descendants(df + "Document").Any(item =>(string)item.Element(df + "InvS").Value == "N") 
      select e.Element(df + "DocT").Element(df + "EndT").Value); 

輸出:23.98,12.34,24.4 ...

現在做的和()

var foundNode3 = (from e in root.Descendants(df + "Inv") 
      where e.Descendants(df + "Document").Any(item =>(string)item.Element(df + "InvS").Value == "N") 
      select double.Parse(e.Element(df + "DocT").Element(df + "EndT").Value)).Sum(); 

出現FormatException:輸入錯誤的字符串

有人可以幫助我嗎?

+1

所以,你想要做什麼?只總結有效雙打字符串並跳過無效字符串?如果你能向我們展示一些沒有被正確解析的字符串,並且知道它們應該被解析到什麼地方,那麼也許我們可以幫助你編寫一個工作解析函數,或者是什麼?你的程序*應該做的是什麼? – Servy

+0

你能顯示第一個查詢的所有值(包括空值)嗎? –

回答

0

不知道如何與它寫,但改變它像下面可能會有幫助:

var foundNode3 = root.Descendants(df + "Inv") 
    .Where(e => e.Descendants(df + "Document") 
       .Any(item =>(string)item.Element(df + "InvS").Value == "N")) 
    .Select(e => 
    { 
     double value; 
     string sValue = e.Element(df + "DocT").Element(df + "EndT").Value; 
     if(double.TryParse(sValue, out value)) 
      return value; 
     return 0; 
    }) 
    .Sum();