在这里,我有一个我的班级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)
有人可以给我任何消化吗?
您可以使用 生成所需的 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)