gpt4 book ai didi

c# - 将元素的多个属性返回到列表。 LINQ 到 XML

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:24 25 4
gpt4 key购买 nike

我有一个类似于下面的 xml。

<rowset>
<row attribute1="somevalue1" attribute2="somevalue2" attribute3="somevalue3" attribute4="somevalue4"/>
<row attribute1="somevalue1" attribute2="somevalue2" attribute3="somevalue3" attribute4="somevalue4"/>
<row attribute1="somevalue1" attribute2="somevalue2" attribute3="somevalue3" attribute4="somevalue4"/>
<row attribute1="somevalue1" attribute2="somevalue2" attribute3="somevalue3" attribute4="somevalue4"/>
</rowset>

我想要做的是返回一个列表,其中每一行都是一个列表项,属性将是子项。我得到的最接近的是以下语句,但我无法让它返回我可以通过计数和查看在调试中看到的值。

var skillslist = testmultilist.Descendants("row").Select(a => a.Attributes()).ToList();

任何帮助将不胜感激。

最后我是这样的。

var skillslist = testmultilist.Descendants("row").Select(a => a.Attributes().Select(c => c.Value).ToList()).ToList();

我可以使用“string derp = testmultilist[6][3]”从中提取字符串。这给出了第七行的第四个值。

最佳答案

根据您的评论更新

"what I was looking for was to be able to do something similar to this "testmultilist[0][2]" which would return somevalue3 from the first row although I am not sure I am going about it the right way."

你又一次非常接近,只是你选择了 IEnumerable<XAttribute>而不是 List<string>属性值。

这是如何做到这一点(评论给任何偶然发现这个的人:

    var skillslist = testmultilist.Elements("row")            // Get the Elements
.Select(e => e.Attributes() // Select the attributes per element (returns IEnumerable<XAttribute>)
.Select(a => a.Value) // Working on the attributes, get only the value
.ToList() // Must be a list here in order to use indexer [] to access items; this creates the innter List<> items
) // this completes the selection of each outer "row" item
.ToList();

测试应用:

using System;
using System.Linq;
using System.Xml.Linq;

namespace XLinqAttributeGetNames
{
class Program
{
static void Main(string[] args)
{
XElement testmultilist = XElement.Parse(@"<rowset>
<row attribute1=""somevalue1"" attribute2=""somevalue2"" attribute3=""somevalue3"" attribute4=""somevalue4""/>
<row attribute1=""somevalue1"" attribute2=""somevalue2"" attribute3=""somevalue3"" attribute4=""somevalue4""/>
<row attribute1=""somevalue1"" attribute2=""somevalue2"" attribute3=""somevalue3"" attribute4=""somevalue4""/>
<row attribute1=""somevalue1"" attribute2=""somevalue2"" attribute3=""somevalue3"" attribute4=""somevalue4""/>
</rowset>");

var skillslist = testmultilist.Elements("row")
.Select(s => s.Attributes()
.Select(a => a.Value)
.ToList()
)
.ToList();

for (var i = 0; i < skillslist.Count; i++)
{
Console.WriteLine("Row " + i);
for (var j = 0; j < skillslist[i].Count(); j++)
{
Console.WriteLine("Item " + j + ": " + skillslist[i][j]);
}
Console.WriteLine();
}
Console.ReadKey();

}
}
}

关于c# - 将元素的多个属性返回到列表。 LINQ 到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15394113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com