我正在尝试获得4个List深度列表集合,列表< List< List< List< int>>>>.从我的Xml看起来像
<root>
<Claim key="1" carrier="cara" zip="34343" pages="1"/>
<Claim key="2" carrier="cara" zip="34343" pages="2"/>
<Claim key="3" carrier="carB" zip="10505" pages="2"/>
<Claim key="4" carrier="carB" zip="10505" pages="4"/>
<Claim key="5" carrier="carB" zip="10505" pages="4"/>
</root>
输出的结构应该是这样的
-all
-1
-34343
-cara
-1
-2
-34343
-cara
-2
-10505
-carB
-3
-4
-10505
-carB
-4
-5
目标是首先根据节点属性按页数,然后按zip,然后按操作符对XML进行排序.然后,我需要遍历结果列表并按特定顺序处理每个声明.我无法获得3个嵌套组的语法.我已经完成了获得2个嵌套组,任何人都可以帮助我获得第三个.
到目前为止,这是我的代码.
var query = from claim in root.Elements("Claim")
group claim by claim.Attributes("Pages").First().Value into pageGroups
from zipGroups in
(from claim in pageGroups
group claim by int.Parse(claim.Attributes("CarrierZip").First().Value))
group zipGroups by pageGroups.Key;
解决方法:
如果没有别的,我相信这段代码会回答你的问题.必须处理四个嵌套列表是非常复杂的,如果您可以将解决方案重构为更简单的方法,您可能会发现您的代码将更容易维护.
var xml = @"<root>
<Claim key=""1"" carrier=""cara"" zip=""34343"" pages=""1""/>
<Claim key=""2"" carrier=""cara"" zip=""34343"" pages=""2""/>
<Claim key=""3"" carrier=""carB"" zip=""10505"" pages=""2""/>
<Claim key=""4"" carrier=""carB"" zip=""10505"" pages=""4""/>
<Claim key=""5"" carrier=""carB"" zip=""10505"" pages=""4""/>
</root>";
var xElement = XElement.Parse(xml);
var claims = xElement
.Elements("Claim")
.Select(
x => new {
Key = (Int32) x.Attribute("key"),
Carrier = (String) x.Attribute("carrier"),
Zip = (Int32) x.Attribute("zip"),
Pages = (Int32) x.Attribute("pages")
}
);
var lists = claims
.OrderBy(claim => claim.Pages)
.GroupBy(claim => claim.Pages)
.Select(pagesGroup => pagesGroup
.OrderBy(claim => claim.Zip)
.GroupBy(claim => claim.Zip)
.Select(zipGroup => zipGroup
.OrderBy(claim => claim.Carrier)
.GroupBy(claim => claim.Carrier)
.Select(carrierGroup => carrierGroup
.OrderBy(claim => claim.Key)
.Select(claim => claim.Key)
.ToList()
)
.ToList()
)
.ToList()
)
.ToList();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。