我想知道是否可以在linq语句中包含内部变量或委托?
我目前正在使用带有XPath扩展的Linq到XML,并且在我无法保证的元素上使用了where子句。
以下是我的意思的样本:
var result =
from record in xml.Root.XPathSelectElements("record")
where ...
select record;
我想要的地方是:
where
{
var element = record.XPathSelectElement("element[@type='sometype']");
return (element != null && element.Value.Contains("keyword"));
}
答案 0 :(得分:7)
你想在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;
答案 1 :(得分:3)
你可以在这里使用“let”子句;
from record in xml.Root.XPathSelectElements("record")
let element = record.XPathSelectElement("element[@type='sometype']")
where element != null && element.Value.Contains("keyword")
select record;
答案 2 :(得分:1)
我不确定查询语法是否足够肯定,但这对于函数语法来说是微不足道的:
var result = xml.Root.XPathSelectElements("record").Where(record => {
var element = record.XPathSelectElement("element[@type='sometype']");
return (element != null && element.Value.Contains("keyword"));
});