je la requête LINQ suivante:LINQ NullReferenceException tout en vérifiant référence null
List<FileInputItem> inputList = GetInputList();
var results = from FileInputItem f in inputList
where (Path.GetDirectoryName(f.Folder).ToLower().Trim() == somePath
|| Path.GetDirectoryName(f.Folder).ToLower().Trim() == someOtherPath)
&& f.Expression == null
select f;
Chaque fois que cette requête est exécutée, il génère un NullReferenceException. Si j'enlève la condition f.Expression == null
ou la change en f.Expression != null
, la requête s'exécute normalement (donnant les mauvais résultats, bien sûr).
Les bits correspondants de FileInputItem
ressemblent à ceci:
[Serializable]
public class FileInputItem
{
[XmlElement("Folder")]
public string Folder { get; set; }
[XmlElement("Expression")]
public string Expression { get; set; }
/*SNIP. Irrelevant properties */
}
Je suis nouveau à LINQ à des objets, donc je suis probablement manque quelque chose de fondamental ici. Quel est le problème?
La première partie de && est-elle évaluée en premier? – brickner
Exactement à droite. J'avais naïvement supposé que Dossier ne serait jamais nul. – Odrade
Merci @brickner, c'est correct. J'ai mis à jour le message pour indiquer qu'il devrait être au début –