首页 / C# / c# – 3个带linq的嵌套组
c# – 3个带linq的嵌套组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 3个带linq的嵌套组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2059字,纯文字阅读大概需要3分钟。
内容图文
![c# – 3个带linq的嵌套组](/upload/InfoBanner/zyjiaocheng/808/bf464e2fd2a7471db5f822f3f4445525.jpg)
我正在尝试获得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();
内容总结
以上是互联网集市为您收集整理的c# – 3个带linq的嵌套组全部内容,希望文章能够帮你解决c# – 3个带linq的嵌套组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。