我有一个类似于这样的XML字符串:
<FIXML>
<T TrdTyp = "1" etc/>
</FIXML>
<FIXML>
<X TrdTyp = "0" etc/>
</FIXML>
请注意,FIXML的第一个后代的名称可以是任何名称,在这个简短的示例中,它可以是T或X.我需要访问属性TrdType来计算出现次数。
在不知道FIXML后代的名称的情况下,执行此操作的正确LINQ查询是什么?
如果我知道后代的名字,这是有效的,但只有那些是T,我会想念X:
var t =
from el in clearingMessagesDoc.Elements("ClearingMessages").Elements("FIXML").Elements("T")
let trdtyp = el.Attribute("TrdTyp").Value
group trdtyp by trdtyp.Trim() into g
orderby g.Key descending
select new {
TrdType = g.Key,
Count = g.Count()
};
因此,对于“0”计数为1,对于“1”
计数为1谢谢。
答案 0 :(得分:1)
这个怎么样:
var t =
from el in clearingMessagesDoc.Elements("ClearingMessages")
.Elements("FIXML")
.Elements()
.First(e => e.Attribute("TrdTyp") != null)
let trdtyp = el.Attribute("TrdTyp").Value
group trdtyp by trdtyp.Trim() into g
orderby g.Key descending
select new {
TrdType = g.Key,
Count = g.Count()
};