簡體   English   中英

使用LINQ C#在XML中使用XElement的值過濾查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM