Ho 2 lista oggetto di tipo di una classe,Come utilizzare variabili locali in un'espressione 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" });
ora devo ottenere tutti gli ID da "pr" ListObject che non ha alcuna voce o numero dispari di voci nel "tem" ListObejct. usando lamda.
Per fare questo ho usato,
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));
e funziona benissimo.
ma si può vedere dal codice ho usato tem.FindAll (t => t.id == p) Count due volte per comapre con == 0 e % 2! = 0.
C'è un modo per utilizzare tem.FindAll (t => t.id == p) Count una sola volta e salvarlo a una variabile temporanea e quindi confrontare questa variabile con == 0 e % 2! = 0.
Più semplicemente voglio solo usarlo una volta per due condizioni qui.
non utilizzare subjjects come "problema di fronte in xxx ", questo sarà il link di Google. –
Hai ottenuto @TimSchmelter – Rezoan