Betrachten Sie den folgenden Fall:Linq links kommen, wenn die Klasse auf der linken Seite des Gleichheits null sein kann
Klassen
public class Nested
{
public Nested(int id){ Id = id; }
public int? Id {get; set;}
}
public class Pair
{
public Nested NestedType {get; set;}
public string Name {get; set;}
}
public class Match
{
public int? Id {get; set;}
public string Name {get; set;}
}
Instanzen
var p1 = new Pair();
p1.NestedType = new Nested(1);
p1.Name = "a";
var p2 = new Pair();
p2.NestedType = null;
p2.Name = "b";
var p3 = new Pair();
p3.NestedType = new Nested(3);
p3.Name = "c";
List<Pair> pairs = new List<Pair>() {p1, p2, p3};
var m1 = new Match();
m1.Id = 1;
m1.Name = "AA";
var m2 = new Match();
m2.Id = null;
m2.Name = "BB";
var m3 = new Match();
m3.Id = 3;
m3.Name = "CC";
List<Match> matches = new List<Match>(){m1, m2, m3};
Abfrage
Die Abfrage löst eine Ausnahme in der equals
-Anweisung aus, wenn null ist.
Was ich erreichen möchte, ist dies: Wenn ist Null, sollte ein null
Wert anstelle davon platziert werden; Es ist so, als wäre zugewiesen, aber Id
ist null. Kann es gemacht werden?
EDIT: Ich muss C# 5.0 verwenden.
Das ist genau das, was [C# null Konditionaloperator] (https : //msdn.microsoft.com/en-us/library/dn986595.aspx) ist für - 'on p? .NestedType.Id ist gleich m.Id' –