2009-08-25 57 views
1

我想知道是否有可能在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")); 
} 

回答

7

你想要的「讓」關鍵字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; 
1

我不知道查詢語法不夠好肯定地說,但是這將是微不足道的與功能語法:

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

你可以使用一個「讓」的條款在這裏;

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