LINQ Where 子句中的复杂表达式

发布于 2024-08-03 02:16:20 字数 468 浏览 3 评论 0原文

我想知道是否可以在 linq 语句中包含内部变量或委托?

我目前正在使用带有 XPath 扩展的 Linq to XML,并且正在对我无法保证会存在的元素使用 where 子句。

这是我的意思的一个示例:

var result =
    from record in xml.Root.XPathSelectElements("record")
    where ...
    select record;

我希望 where 是这样的:

where 
{ 
    var element = record.XPathSelectElement("element[@type='sometype']"); 
    return (element != null && element.Value.Contains("keyword")); 
}

I was wondering if it is possible to include inner variables or delegates in linq statements?

I currently am using Linq to XML with XPath extensions and am using a where clause on an element that I cannot guarantee will exist.

Here is a sample of what I mean:

var result =
    from record in xml.Root.XPathSelectElements("record")
    where ...
    select record;

I want the where to be something like:

where 
{ 
    var element = record.XPathSelectElement("element[@type='sometype']"); 
    return (element != null && element.Value.Contains("keyword")); 
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

刘备忘录 2024-08-10 02:16:20

您需要 Linq 中的“let”关键字。像这样的东西吗?

var result =
    from record in xml.Root.XPathSelectElements("record")
    let element = record.XPathSelectElement("element[@type='sometype']")
    where (element != null && element.Value.Contains("keyword"))
    select record;

You want the "let" keyword in Linq. Something like this?

var result =
    from record in xml.Root.XPathSelectElements("record")
    let element = record.XPathSelectElement("element[@type='sometype']")
    where (element != null && element.Value.Contains("keyword"))
    select record;
无戏配角 2024-08-10 02:16:20

您可以在这里使用“let”子句;

from record in xml.Root.XPathSelectElements("record")
let element = record.XPathSelectElement("element[@type='sometype']")
where element != null && element.Value.Contains("keyword")
select record;

You could use a "let" clause here;

from record in xml.Root.XPathSelectElements("record")
let element = record.XPathSelectElement("element[@type='sometype']")
where element != null && element.Value.Contains("keyword")
select record;
猥琐帝 2024-08-10 02:16:20

我不太了解查询语法,无法确定,但这对于函数语法来说是微不足道的:

var result = xml.Root.XPathSelectElements("record").Where(record => {
   var element = record.XPathSelectElement("element[@type='sometype']");
   return (element != null && element.Value.Contains("keyword"));
});

I don't know the query syntax well enough to say for sure, but this would be trivial with the functional syntax:

var result = xml.Root.XPathSelectElements("record").Where(record => {
   var element = record.XPathSelectElement("element[@type='sometype']");
   return (element != null && element.Value.Contains("keyword"));
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文