![](/img/trans.png)
[英]get list from xml using linq based on true if there is no true then select false condition tag element in c#
[英]Select elements based on condition LINQ TO XML C#
我正在使用LINQ TO XML查詢XML。 我想基於一些條件檢查來查詢記錄,這是我的XML:XML將有多個Orders每個訂單都在我要選擇的訂單中,其param節點屬性存儲值不為null,如果存在,則應為1,並且也為order帶有紙箱信息...
<orders>
<order>
<criteria>
<param name="location">123</param>
<param name="name">Chicago</param>
<param name="Store">1</param>
<param name="Account Number">1212121212</param>
</criteria>
<items>
<item> </item>
<item> </item>
</items>
<cartons>
<carton>
<size> </size>
<weight></weight>
</carton>
</cartons>
</order>
<Order>
</Order>
</orders>
我可以做到這一點:
var result = from item in doc.Descendants("order")
where item.Element("criteria").Element("param").Attribute("name").Value.Contains("store") == true
&& item.Element("cartons") != null
select item;"
如果我的store(param)屬性在過濾器節點中的第一個位置,則上述方法效果很好,但是如果我將store(param)屬性移動到除第一個位置以外的其他位置,則它不會對其進行過濾
問題在於您僅查看一個 param
元素-始終是第一個param
元素,因為這就是Element
所做的。
如果要匹配的任何參數是值為1的“ Store”元素,則要使用Any
方法並使用Elements
查找所有參數:
var query = from item in doc.Descendants("order")
where item.Element("criteria").Elements("param")
.Any(p => p.Attribute("name").Value == "Store" &&
(int) p == 1)
&& item.Element("cartons") != null
select item;
查詢表達式在這里並沒有真正幫助您-我會使用:
var query = doc.Descendants("order")
.Where(item => item.Element("criteria").Elements("param")
.Any(p => p.Attribute("name").Value == "Store" &&
(int) p == 1)
&& item.Element("cartons") != null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.