如何解决LINQ-获取一组元素的最大值
| 如何使用LINQ查询XML结构并获取属于特定元素的一组元素的最大值。 例如,如何获得FullTicket,DayTicket和ChildTicket允许的最大年龄,其中XML结构如下所示 <TicketTypes>
<TicketType Name=\"FullTicket\">
<AgeBands>
<AgeBand>
<Code>Adult1</Code>
<MinAge>18</MinAge>
<MaxAge>59</MaxAge>
</AgeBand>
<AgeBand>
<Code>Adult2</Code>
<MinAge>60</MinAge>
<MaxAge>64</MaxAge>
</AgeBand>
<AgeBand>
<Code>Adult3</Code>
<MinAge>65</MinAge>
<MaxAge>79</MaxAge>
</AgeBand>
</AgeBands>
</TicketType>
<TicketType Name=\"DayTicket\">
<AgeBands>
<AgeBand>
<Code>Adult2</Code>
<MinAge>18</MinAge>
<MaxAge>64</MaxAge>
</AgeBand>
<AgeBand>
<Code>Adult3</Code>
<MinAge>65</MinAge>
<MaxAge>89</MaxAge>
</AgeBand>
</AgeBands>
</TicketType>
<TicketType Name=\"ChildTicket\">
<AgeBands>
<AgeBand>
<Code>Child</Code>
<MinAge>3</MinAge>
<MaxAge>17</MaxAge>
</AgeBand>
<AgeBand>
<Code>Infant</Code>
<MinAge>0</MinAge>
<MaxAge>2</MaxAge>
</AgeBand>
</AgeBands>
</TicketType>
</TicketTypes>
解决方法
您的意思是您想要MaxAge的最高价值? (这里已经有\“ max \”的事实有点令人困惑。)请尝试如下操作:
// Find the FullTicket element
var fullTicket = ticketTypes.Elements(\"TicketType\")
.Where(x => (string) x.Attribute(\"Name\") == \"FullTicket\")
.First();
// Find the maximum value of any MaxAge element within FullTicket
var maxFullTicketAge = fullTicket.Descendants(\"MaxAge\")
.Max(x => (int) x);
您可以对其他类型的票证执行相同的操作,或者如果您喜欢冒险,可以执行以下操作:
var maxAges = ticketTypes
.Elements(\"TicketType\")
.Select(x => new {
Name = (string) x.Attribute(\"Name\"),MaxMaxAge = x.Descendants(\"MaxAge\").Max(y => (int) y)
});
,var values = from item in TicketTypes.Descendants(\"TicketType\")
from agebands in item.Descendants(\"AgeBands\")
from ageband in agebands.Descendants(\"AgeBand\")
select item.Attribute(\"Name\"),ageBand.MaxAge;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。