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