gpt4 book ai didi

c# - Linq to XML 降序排序?

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:02 25 4
gpt4 key购买 nike

我在使用 OrderByDescending 时遇到问题。它没有正确排序。我有一个如下所示的 XML 文件:

  <player id="3">
<name>David, Backham</name>
<goals>155</goals>
</player>

我正在尝试显示 3 名进球最多的球员。

 XDocument doc = XDocument.Load("players.xml");

/// .OrderByDescending(r => r.Attribute("goals"))
var players = from r in doc.Descendants("player").OrderByDescending(r => r.Value)

select new
{
Name = r.Element("name").Value + " ",
Goal = r.Element("goals").Value + " ",

};


foreach (var r in players)
{
Console.WriteLine(r.Name + r.Goal);
}

最佳答案

大概是这样的:

var players = 
(from r in doc.Descendants("player")
orderby int.Parse(r.Element("goals").Value) descending
select new
{
Name = r.Element("name").Value + " ",
Goal = r.Element("goals").Value + " ",
})
.Take(3);

或者用流利的语法:

var players = doc.Descendants("player")
.OrderByDescending(r => int.Parse(r.Element("goals").Value))
.Select(r => new
{
Name = r.Element("name").Value + " ",
Goal = r.Element("goals").Value + " ",
})
.Take(3);

请注意,您需要将字符串值解析为整数以获得正确的排序顺序。

要过滤结果,您可以这样做:

var players = 
(from r in doc.Descendants("player")
where r.Element("name").Value.StartsWith("David")
orderby int.Parse(r.Element("goals").Value) descending
select new
{
Name = r.Element("name").Value + " ",
Goal = r.Element("goals").Value + " ",
})
.Take(3);

或者用流利的语法:

var players = doc.Descendants("player")
.Where(r => r.Element("name").Value.StartsWith("David"))
.OrderByDescending(r => int.Parse(r.Element("goals").Value))
.Select(r => new
{
Name = r.Element("name").Value + " ",
Goal = r.Element("goals").Value + " ",
})
.Take(3);

关于c# - Linq to XML 降序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com