Espressioni complesse in un LINQ Dove clausola
-
19-09-2019 - |
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"));
}
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