如何从group by生成html字符串

Mau*_*iel 5 c# linq

在这里,我有一个我的班级Assinantes的名单

new Assinante
            {
                City= "BAURU",
                Num= 112,
                ClientCode= 3123,
                Phone= "1412345675"
            },
            new Assinante
            {
                City= "BAURU",
                Num= 45,
                ClientCode= 3123,
                Phone= "214464347"
            }
Run Code Online (Sandbox Code Playgroud)

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

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

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

<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>
Run Code Online (Sandbox Code Playgroud)

有人可以给我任何消化吗?

ASh*_*ASh 1

您可以使用 生成所需的 html XElement。我想我的示例可以用 Linq 方法 Aggregate 重写,但我更喜欢嵌套 foreach 因为代码更可读

摆弄演示

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();
Run Code Online (Sandbox Code Playgroud)