LINQ表达式用于查找XElement并循环遍历可以添加到列表框的属性

时间:2012-02-05 08:21:55

标签: c# .net xml linq linq-to-xml

好的,这是我的基本XML结构:

 <device
    name="abc"
    source1="True"
    source2="True"
    ...
    source19="False"
    source20="False" />

我需要在文件中搜索与特定名称匹配的设备,然后遍历所有它的所有属性。所有这些都是真的将具有基于添加到列表框的选项#的用户友好字符串。我可以弄清楚第一部分而不是循环,它似乎不是常见的事情。

1 个答案:

答案 0 :(得分:1)

我认为这应该有用

XDocument doc = XDocument.Load("your XML");
var device = doc.Descendants("device").Select(item => item).Where(
                        item => item.Attribute("name").Value.ToString().Equals("some name")).FirstOrDefault();

if(null != device)
{
    var items = device.Attributes().Select(item => item).Where(item =>  item.Value == "True");
    if(null != items)
    {
        //you can also customize name according to your needs here
        yourListBox.AddRange(items.Select( item => item.Name.ToString() ).ToList());
    }
}