2009-08-25 20 views
1

linq文に内部変数または代理人を含めることが可能かどうか疑問に思っていましたか?LINQの複雑な式where節

私は現在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;