【发布时间】:2014-04-09 13:59:15
【问题描述】:
我有一个使用 XDocument 解析的 XML 文档:
XDocument _document = XDocument.Parse(XMLString);
我正在阅读的 XML(实际示例可能包含许多相同的 ItemNumber):
<Line>
<ITEMNMBR>18-4695</ITEMNMBR>
<UNITCOST>2.00000</UNITCOST>
<UNITPRCE>7.00000</UNITPRCE>
<QUANTITY>15.00000</QUANTITY>
</Line>
<Line>
<ITEMNMBR>18-4695</ITEMNMBR>
<UNITCOST>3.00000</UNITCOST>
<UNITPRCE>7.00000</UNITPRCE>
<QUANTITY>22.00000</QUANTITY>
</Line>
然后我将这个 xml 读入字典:
var lines = _document.Descendants("Line")
.Select(l => l.Elements().ToDictionary(e => e.Name.LocalName, e => e.Value)).ToList();
接下来,获取不同 ItemNumber 的列表:
var itemNumbers = lines.Where(dict => dict.ContainsKey("ITEMNMBR"))
.Select(dict => dict["ITEMNMBR"])
.Distinct()
.ToList();
现在我有一个不同 ItemNumber 的列表,我需要获取每个的总数,所以我循环字典:
foreach (string itemNumber in itemNumbers)
{...
循环内部是我通过 ItemNumber 查询值的地方:
var qty = lines.Where(dict => dict.ContainsValue(itemNumber))
.Select(dict => dict["QUANTITY"])
.ToList();
下一个领域是我遇到问题的地方。我可以计算数量的总和吗?我尝试了类似的方法,但得到了编译器错误(这是可以理解的,我正在尝试对字符串求和)
int sum = qty.Sum(x => Convert.ToDecimal(x.Value));
我得到“字符串不包含值的定义”...
我如何总结这些结果?
【问题讨论】:
标签: c# linq dictionary