[英]Linq query to return distinct values in xml
我有一個具有以下結構的XML:
<Categories>
<Category>
<Books>
<Book>
<BookId>1</BookId>
<BookQuantity>150</BookQuantity>
</Book>
<Book>
<BookId>2</BookId>
<BookQuantity>250</BookQuantity>
</Book>
</Books>
</Category>
<Category>
<Books>
<Book>
<BookId>1</BookId>
<BookQuantity>150</BookQuantity>
</Book>
<Book>
<BookId>3</BookId>
<BookQuantity>250</BookQuantity>
</Book>
</Books>
</Category>
</Categories>
我正在嘗試檢索類別中具有數量的每本不同的圖書。 輸出為:
Book 1 300
Book 2 250
Book 3 250
任何執行此操作的最佳方法。 我嘗試使用linq查詢,但無法成功。
您可以使用Linq到Xml 。 查詢很簡單-只需選擇所有Book元素,然后按BookId元素的值對它們進行分組。 然后將每個組投影到匿名對象或書籍類實例中:
var xdoc = XDocument.Load(path_to_xml);
var books = from b in xdoc.Root.Descendants("Book")
group b by (int)b.Element("BookId") into g
select new {
Id = g.Key,
Quantity = g.Sum(b => (int)b.Element("BookQuantity"))
};
結果:
[
{ "Id": 1, "Quantity": 300 },
{ "Id": 2, "Quantity": 250 },
{ "Id": 3, "Quantity": 250 }
]
除了創建匿名對象,您還可以創建Book類的實例:
public class Book
{
public int Id { get; set; }
public int Quantity { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.