我有一个像这样的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>
我想要
有人能给我一个如何去做的提示吗?
答案 0 :(得分: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() });
}