在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;