как работать с linq to xml?
Всем здравствуйте. Прохожу обучение по .NET. Насыпали мне заданий. Порядок такой: нужно дописывать методы, которые потом прогоняются по заранее созданным тестам, и начисляются баллы. Блок с "простыми" запросами Linq я худо-бедно осилил. Но вот застрял с Linq To Xml. Помогите пожалуйста разобраться. Ибо я вообще не понимаю, что нужно делать. Вот код одного из заданий на эту тему:
/// <summary>
/// Creates hierarchical data grouped by category
/// </summary>
/// <param name="xmlRepresentation">Xml representation (refer to CreateHierarchySourceFile.xml in Resources)</param>
/// <returns>Xml representation (refer to CreateHierarchyResultFile.xml in Resources)</returns>
public static string CreateHierarchy(string xmlRepresentation)
{
throw new NotImplementedException();
}
Впоследствии нужно будет прогнать через данный тест:
[TestMethod]
[TestCategory("LinqToXml.CreateHierarchyTest")]
public void CreateHierarchyTest()
{
Assert.AreEqual(LinqToXmlResources.CreateHierarchyResultFile, LinqToXml.CreateHierarchy(LinqToXmlResources.CreateHierarchySourceFile));
}
На сколько я понимаю, нужно написать linq для группировки, но даже не знаю с чего начать... Спасибо!
Ответы (1 шт):
Автор решения: Peterblr
→ Ссылка
public static string CreateHierarchy(string xmlRepresentation)
{
XElement doc = XElement.Parse(xmlRepresentation);
var newData =
new XElement("Root",
from data in doc.Elements("Data")
group data by (string)data.Element("Category") into groupedData
select new XElement("Group",
new XAttribute("ID", groupedData.Key),
from g in groupedData
select new XElement("Data",
g.Element("Quantity"),
g.Element("Price")
)
)
);
return newData.ToString();
}