2012-03-23 42 views
1

我的XML文件看起來像這樣如何找到值之和與LINQ

<xxx> 
    <fff>1</fff> 
</xxx> 
<xxx> 
    <fff>1</fff> 
</xxx> 

而且我想找到值的節點的總和。我想這樣:

var sum = from c in el.Elements() 
     select new {I don't know what to write here} 

然後迭代sum,但我想要在一個查詢中執行它。

如何查詢將是什麼樣子?

+0

'我想從'中找到值的總和。我猜字段'fff'的總和,但如果你的真正的XML中有更多的整數字段呢?你爲什麼不發佈你的**真實**問題? – 2012-03-23 23:44:07

+0

yes.there還有另一個整數字段。但我認爲有可能從這個領域獲得價值 – 2012-03-23 23:47:18

+0

然後看到下面的答案;) – 2012-03-23 23:50:41

回答

5

也許這樣的事?

int sum = root.Descendants("fff").Sum(e => (int) e); 
+0

如果什麼有一個XML部分'例外'? – 2012-03-23 23:47:46

+0

@ L.B嘿,別問我。我剛剛提供了一個簡單的單一查詢解決方案。 – 2012-03-23 23:55:28

3

我認爲這將是更多這樣的:

int sum = root.Descendants("fff").Sum(e => int.Parse(e.Value)); 
+1

與其他答案有什麼不同? – 2012-03-23 23:49:14

+0

e實際上是一個XElement,它有一個名爲Value的屬性,它是一個包含fff元素文本的字符串。我不認爲巴拉斯的答案會實際編譯。 – 2012-03-23 23:52:12

+0

會,感謝LINQ到XML魔術和做同樣的事情 - 只是比你的答案簡潔得多 – BrokenGlass 2012-03-23 23:54:13

0

對於需要使用的TryParse不分析,例如異常情況

int sum = el.Descendants("fff").Sum (e => 
    { 
     int v; 
     return int.TryParse(e.Value, out v) ? v : 0; 
    });