[英]Filter a query using value of XElement within XML using LINQ C#
使用LINQ C#,我正在查詢數據庫表。 該表有一個包含XML的列,我想根據XML中等於預定義字符串的元素值來過濾結果。 我正在使用以下查詢:
(from data in DataObjects.Items
where data.DataItemTimeUtc < DateTime.UtcNow &&
data.DataItemXml.XDocument
.Descendants("Items")
.Descendants("MetaData")
.Descendants("Device")
.First().Value == "abc123"
orderby data.DataItemTimeUtc descending
select data).ToArray();
但它失敗並顯示錯誤:
類型'System.Collections.Generic.IEnumerable`1 [System.Xml.Linq.XElement]'的表達式不是序列
那這個呢?
var x = DataObjects.Items
.Where(data => data.DataItemTimeUtc < DateTime.UtcNow
&& data.DataItemXml.XDocument
.Elements("Items")
.Elements("MetaData")
.Elements("Device")
.First().Value == "abc123")
.OrderBy(data => data.DataItemTimeUtc);
我只是試圖消除您的語法錯誤,將Descendants
更改為Elements
,該Elements
僅需要直接子代。 然后,我將其更改為“方法語法”而不是“表達式語法”,以使屬於一起的事物保持在一起。 但是,您必須知道.First()
可能不會導致任何元素,然后.Value
將引發空引用異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.