【发布时间】:2017-11-23 16:15:00
【问题描述】:
我开始使用 xml 和 C# 和 linq。
我有这种xml
<allegati tot_ele="2">
<record>
<dato nome="IdUnivoco">35516</dato>
<dato nome="Nome">QUOTAZIONE</dato>
<dato nome="RelationID">1268</dato>
<dato nome="nomeFile">1268.pdf</dato>
</record>
<record>
<dato nome="IdUnivoco">35516</dato>
<dato nome="Nome">CONFERMA D`ORDINE</dato>
<dato nome="RelationID">1267</dato>
<dato nome="nomeFile">1267.pdf</dato>
</record>
</allegati>
谁创建它使用相同的元素名称并使用属性来指定值的名称
有没有一种简单的方法可以为每条记录创建一个结构并使用 linq 创建一个结构列表?
此刻我设法创建了 4 个不同的字符串列表(我只发布了 2 个而不是全部 4 个)
List<string> NomeFile1 = (from c in listaAttch.Descendants("dato")
where c.Attribute("nome").Value == "nomeFile"
select c.Value).ToList();
List<string> Relation = (from c in listaAttch.Descendants("dato")
where c.Attribute("nome").Value == "RelationID"
select c.Value).ToList();
然后用 for i 将使用 4 个字符串来满足我的需要
for (int i = 0; i < Relation.Count; i++)
{
byte[] file = Adiuto.getAttachContent1(login, 35516, Int32.Parse(Relation [i]));
System.IO.File.WriteAllBytes("c:\\navision\\" + NomeFile1[i], file);
.
.
.
}
有没有更快更优雅的方法呢?无需重复 linq 4 次? 是否也可以创建具有所有 4 个属性值的结构列表
在此先感谢
法布里齐奥
【问题讨论】:
-
请注意,此 XML 没有任何格式错误(甚至不寻常)。它只是不是 Linq 旨在(轻松地)处理的那种 XML。