Mam 2 listy obiekt typu jakiejś klasy,Jak używać zmiennych lokalnych w wyrażeniu lambda
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" });
teraz muszę uzyskać wszystkie identyfikatory z „pr” ListObject że ma żadnego wpisu lub nieparzysta liczba wpisów w "tem" ListObejct. używając lamda.
W tym celu użyłem,
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));
i działa dobrze.
ale widać z kodu Użyłem tem.FindAll (t => t.id == p) .Count dwukrotnie comapre z == 0 i % 2! = 0.
Czy jest jakiś sposób na wykorzystanie tem.FindAll (t => t.id == P) .Count raz i zapisać go do zmiennej tymczasowej, a następnie porównać tę zmienną z == 0 i % 2! = 0.
Po prostu chcę go użyć raz na dwa warunki tutaj.
Proszę nie używać subjjects jako „problem skierowaną w xxx ", będzie to link google. –
Got u @TimSchmelter – Rezoan