如何从分组依据生成html字符串 [英] How do I generate an html string from group by

查看:47
本文介绍了如何从分组依据生成html字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,我有我班上阿辛纳特人的名单

Here I have a list from my class Assinantes

new Assinante
            {
                City= "BAURU",
                Num= 112,
                ClientCode= 3123,
                Phone= "1412345675"
            },
            new Assinante
            {
                City= "BAURU",
                Num= 45,
                ClientCode= 3123,
                Phone= "214464347"
            }

我需要按城市,ClientCod和Num进行分组,而我已经在这里完成了

And I needed to group by City, ClientCod and Num, which I've already done here:

var listGroup= (from a in lista
            group a by new {a.City, a.ClientCode, a.Num});

然后,我需要使用Linq生成一个html字符串,如下例所示:

Then, I needed to generate an html string with Linq, like the example below:

<div>
   <h2>Bauru</h2>
   <ul>
        <li>3123</li>
        <ul>
            <li>112</li>
            <ul>
                <li>1412345675</li>
            </ul>
            <li>45</li>
            <ul>
                <li>214464347</li>
            </ul>
        </ul>
    </ul>
</div>

有人可以给我建议吗?

推荐答案

,您可以使用XElement生成所需的html.我想我的示例可以使用Linq方法Aggregate重写,但是由于代码更具可读性,我更喜欢嵌套的foreach

you can generate desired html using XElement. i suppose my sample can be re-written with Linq method Aggregate, but i prefer nested foreach due to more readable code

弄弄演示

using System.Xml;
using System.Xml.Linq;
...
        var xml = new XElement("div");

        foreach(var city in lst.GroupBy(x=>x.City))
        {
            var cityXml = new XElement("h2", city.Key);
            var cityUl = new XElement("ul");                
            foreach(var client in city.GroupBy(c=>c.ClientCode))
            {
                var clientXml = new XElement("li", client.Key);
                var clientUl = new XElement("ul");

                foreach(var num in client.GroupBy(cl=>cl.Num))
                {
                    var numXml = new XElement("li", num.Key);
                    var numUl = new XElement("ul");                     
                    foreach(var phone in num)
                    {
                        numUl.Add(new XElement("li",phone.Phone));
                    }
                    clientUl.Add(numXml);
                    clientUl.Add(numUl);
                }                   
                cityUl.Add(clientXml);
                cityUl.Add(clientUl);
            }
            xml.Add(cityXml);
            xml.Add(cityUl);
        }

        string res = xml.ToString();

这篇关于如何从分组依据生成html字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆