我有两个某个类别的列表对象,
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" });
现在我需要使用lambda从“pr”ListObject中获取所有ID,该ID在“tem”ListObejct中具有无条目或奇数个条目。
为了实现这一点,我已经使用了以下方法:
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));
它能够正常工作。
但是你可以从代码中看到,我使用了tem.FindAll(t => t.id == p).Count两次来与==0和%2!=0进行比较。
有没有办法将tem.FindAll(t => t.id == p).Count保存到一个临时变量中,然后将此变量与==0和%2!=0进行比较。
简单地说,我只想在这里使用一次,用于两个条件。