在LINQ中的复杂表达式在哪里条款
问题描述:
我想知道是否有可能在linq语句中包含内部变量或代表?在LINQ中的复杂表达式在哪里条款
我目前正在使用带有XPath扩展的XML到Linq,并且在一个我不能保证存在的元素上使用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"));
}
答
你想要的“让”关键字Linq中。像这样?
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;
答
我不知道查询语法不够好肯定地说,但是这将是微不足道的与功能语法:
var result = xml.Root.XPathSelectElements("record").Where(record => {
var element = record.XPathSelectElement("element[@type='sometype']");
return (element != null && element.Value.Contains("keyword"));
});
答
你可以使用一个“让”的条款在这里;
from record in xml.Root.XPathSelectElements("record")
let element = record.XPathSelectElement("element[@type='sometype']")
where element != null && element.Value.Contains("keyword")
select record;