【发布时间】:2020-09-17 08:30:54
【问题描述】:
我有以下 xml: https://pastebin.pl/view/63af9294
我应该找到最高军队参加过的那场战役的名称。 (是的,这是一项学校作业,但我没有接近)
到目前为止,我的代码如下所示:
var q10 = (from a in
(from x in xdoc.Descendants("size") select x)
join b in
(from y in xdoc.Descendants("battle") select y)
on a equals b.Element("attacker").Element("size")
select new
{
size = a.Value,
battle = b.Element("name")
});
我试图先获得最高的数字,而不是按大小加入每场战斗,而不是使用
.Max(x => x.size) ,但正如你所见,我不知道如何为 2 个不同的节点或其他任何节点执行此操作。
我的意思是我可以根据军队的规模加入攻击者或防御者,但不能同时加入他们两个,除非我使用 2 个加入,但我想它可以做得更容易和更好。我不想写代码,只是需要一些提示。
【问题讨论】:
-
如果您对对象进行排序和分组,则对象保持有序。因此,在右括号后添加到查询的末尾: .OrderByDescending(x => x.size).GroupBy(x => x.battle).Select(x => x.First()).ToList();