I 2 Liste Objekt vom Typ einer Klasse haben,Wie lokale Variablen in einem Lambda-Ausdruck verwenden
class person
{
public string id { get; set; }
public string name { get; set; }
}
List<person> pr = new List<person>();
pr.Add(new person { id = "2", name = "rezoan" });
pr.Add(new person { id = "5", name = "marman" });
pr.Add(new person { id = "3", name = "prithibi" });
List<person> tem = new List<person>();
tem.Add(new person { id = "1", name = "rezoan" });
tem.Add(new person { id = "2", name = "marman" });
tem.Add(new person { id = "1", name = "reja" });
tem.Add(new person { id = "3", name = "prithibi" });
tem.Add(new person { id = "3", name = "prithibi" });
Jetzt muss ich alle IDs von „pr“ Listobject erhalten, die keinen Eintrag hat oder ungerade Anzahl der Einträge in der "tem" ListObejct. mit Lamda.
Um dies zu tun, habe ich verwendet,
HashSet<string> inconsistantIDs = new HashSet<string>(pr.Select(p => p.id).Where(p => tem.FindAll(t => t.id == p).Count == 0 || tem.FindAll(t => t.id == p).Count % 2 != 0));
und es funktioniert gut.
aber man kann aus dem Code siehe i tem.FindAll (t => t.id == p) .Count zweimal verwendet haben, mit == 0 und % 2! = 0 bis comapre.
Gibt es eine Möglichkeit tem.FindAll zu verwenden (t => t.id == p) .Count einmal und speichern es zu einer temporären Variablen und dann vergleichen Sie diese Variable mit == 0 und % 2! = 0.
Einfacher möchte ich es nur einmal für zwei Bedingung hier verwenden.
Bitte nicht subjjects als „facing Ausgabe verwenden in xxx ", das wird der Google-Link sein. –
Haben Sie @TimSchmelter – Rezoan