0
返回XML塊,我有以下XML刪除,並從相同的LINQ查詢
<Books>
<Book>
<Name>Let Us C</Name>
<Price>250</Price>
<ID>234</ID>
</Book>
<Book>
<Name>Da Vinci Code</Name>
<Price>500</Price>
<ID>38</ID>
</Book>
<Book>
<Name>Data Structures through C++</Name>
<Price>250</Price>
<ID>234</ID>
</Book>
</Books>
我需要與給定的ID(比如234)刪除所有的書籍,也是LINQ查詢應該返回我的ID和已刪除書籍的名稱作爲keyValue對。是否可以使用相同的LINQ查詢完成?
我寫了以下內容以刪除ID爲38的書。但是我無法獲取ID和名稱,而無需再次迭代它。
var idsToRemove = new List<int>{{38}};
XDocument xmlDoc = XDocument.Load("sample.xml");
xmlDoc.Descendants("Book")
.Where(
Book =>
(Book.Element("ID") != null
&& idsToRemove.Contains(Convert.ToInt32((string) Book.Element("ID").Value)))).Select(Book => Book).Remove();
編輯1:
代碼選擇爲給定的簿ID的鍵值對。
var result = xmlDoc.Descendants("Book")
.Where(
Book =>
(Book.Element("ID") != null
&& idsToRemove.Contains(Convert.ToInt32((string) Book.Element("ID").Value)))).Select(Book => new KeyValuePair<int,string>(Convert.ToInt32(Book.Element("ID").Value),(string)Book.Element("Name")));
我如何用一個單一的LINQ查詢
在這種情況下,removedBooks會給我的IEnumerable這是bulk.I只需要書的編號和名稱的鍵值對。 –
Rockstart
@Rockstart:請參閱更新。 –
謝謝。但是booksToRemove.Remove();應該在最後,否則removeBooks將返回null。 – Rockstart