Silverlight XDocument-获取节点值列表

Silverlight XDocument-获取节点值列表,silverlight,linq-to-xml,Silverlight,Linq To Xml,我有一份XDocument类似于这样的文件: <LookupList> <ImageInfo1> <FieldID>1057</FieldID> <FieldName>Lookup_test</FieldName> <LookupText>open</LookupText> </ImageInfo1> <ImageInfo1> <FieldID

我有一份XDocument类似于这样的文件:

<LookupList>
 <ImageInfo1>
  <FieldID>1057</FieldID> 
  <FieldName>Lookup_test</FieldName> 
  <LookupText>open</LookupText> 
 </ImageInfo1>
 <ImageInfo1>
  <FieldID>1057</FieldID> 
  <FieldName>Lookup_test</FieldName> 
  <LookupText>Waiting for input</LookupText> 
 </ImageInfo1>
 <ImageInfo1>
  <FieldID>1057</FieldID> 
  <FieldName>Lookup_NEW_NAME</FieldName> 
  <LookupText>Closed</LookupText> 
 </ImageInfo1>
</LookupList>

1057
查表检验
打开
1057
查表检验
等待输入
1057
查找新名称
关闭
我想去

  • 唯一字段名的数量和值,以及
  • 每个字段名的LookupText列表

  • 有人能告诉我怎么做吗?

    首先,您需要知道如何阅读XDocument中的元素:

    public void ReadXDocument(XDocument doc)
    {
        foreach (XElement el in doc.Descendants("ImageInfo1"))
        {
            string fieldid = el.Element("FieldID").Value;
            string fieldName = el.Element("FieldName").Value;
            string lookupText = el.Element("LookupText").Value;
        }
    
    一旦您知道了这一点,使用Linq来实现您的目标就相对简单了

    这将为您提供一个不同字段名的列表:

        List<String> distinctNames = doc.Descendants("ImageInfo1")
                     .Select(o => o.Element("FieldName").Value)
                     .Distinct().ToList();
    
        IEnumerable groups = doc.Descendants("ImageInfo1")
                     .GroupBy(o => o.Element("FieldName").Value)
                     .Select(o => new { Key = o.Key, Lookups = o.ToList() });
    }