2

次のような 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>

私は手に入れたい

  1. 一意の FieldName の数と値、および
  2. 各 FieldName の LookupText のリスト。

誰かがそれについてのヒントを教えてもらえますか?

4

1 に答える 1

3

まず、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 を使用して目標を達成するのは比較的簡単です。

これにより、個別の FieldNames のリストが得られます。

    List<String> distinctNames = doc.Descendants("ImageInfo1")
                 .Select(o => o.Element("FieldName").Value)
                 .Distinct().ToList();

そして、これにより、各 FieldName の LookupText 値のコレクションが得られるはずです

    IEnumerable groups = doc.Descendants("ImageInfo1")
                 .GroupBy(o => o.Element("FieldName").Value)
                 .Select(o => new { Key = o.Key, Lookups = o.ToList() });
}
于 2012-08-05T11:56:56.880 に答える