Domanda

Mi chiedevo se è possibile includere variabili interne o delegati in dichiarazioni LINQ?

Io attualmente sto usando LINQ to XML con estensione XPath e sto usando una clausola in cui su un elemento che non posso garantire esisterà.

Ecco un esempio di quello che voglio dire:

var result =
    from record in xml.Root.XPathSelectElements("record")
    where ...
    select record;

Voglio il cui essere qualcosa di simile:

where 
{ 
    var element = record.XPathSelectElement("element[@type='sometype']"); 
    return (element != null && element.Value.Contains("keyword")); 
}
È stato utile?

Soluzione

Si desidera la parola chiave "let" in LINQ. Qualcosa di simile a questo?

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;

Altri suggerimenti

È possibile utilizzare un "let" clausola qui;

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

Non conosco la sintassi di query abbastanza bene per dire con certezza, ma questo sarebbe banale con la sintassi funzionale:

var result = xml.Root.XPathSelectElements("record").Where(record => {
   var element = record.XPathSelectElement("element[@type='sometype']");
   return (element != null && element.Value.Contains("keyword"));
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top