我有與內容的XML文件:交叉聯接在LINQ的XML和LINQ對象名單
<?xml version="1.0" encoding="utf-8" ?>
<packages>
<package productnumber="123">
<stpos>
<pid>345</pid>
<vat>10</vat>
</stpos>
<stpos>
<pid>678</pid>
<vat>20</vat>
</stpos>
</package>
<package productnumber="246">
<stpos>
<pid>81012</pid>
<vat>5</vat>
</stpos>
<stpos>
<pid>141618</pid>
<vat>2</vat>
</stpos>
</package>
</packages>
然後我仍然有一個產品列表:
var productList = new List<Product>
{
new Product {ProductNumber = "123" },
new Product {ProductNumber = "345" },
new Product {ProductNumber = "678" },
new Product {ProductNumber = "246" },
new Product {ProductNumber = "81012" },
new Product {ProductNumber = "Nothing" },
};
我想,對於檢查每個包s productnumber and its pid
存在於productList中。如果它真的,那麼返回這些包。
在我上面的示例:
我想回包productnumber 123因爲在產品列表中存在的所有3個產品編號。
的包productnumber 246,因爲只有2產品號都包含在產品列表中不應該被退回,「沒什麼」不包含...
那是我的查詢:
var doc = XDocument.Load("./packages.xml");
var query = (from package in doc.Descendants("packages").Elements()
from p in productList
where p.ProductNumber == package.Attribute("productnumber").Value &&
productList.All(p =>
package.Descendants("stpos").Select(x => x.Element("pid").Value).Contains(p.ProductNumber))
select package).ToList();
我的query.Count()是0,我不明白爲什麼。
任何人都可以打開我的眼睛,請:-)
但345和678,這是內部123的PID,不包含在'productList' – octavioccl
這是我現在糾正的錯字!它仍然不起作用!伯爵仍然是零!我也認爲我的交叉加入 - 我目前如何使用它 - 是不正確的;-) – Elisabeth