我有一个类的列表对象类型,
class person
{
public string id { get; set; }
public string regid { get; set; }
public string name { get; set; }
}
List<person> pr = new List<person>();
pr.Add(new person { id = "2",regid="2222", name = "rezoan" });
pr.Add(new person { id = "5",regid="5555", name = "marman" });
pr.Add(new person { id = "3",regid="3333", name = "prithibi" });
和一个字符串类型的HashSet,
HashSet<string> inconsistantIDs = new HashSet<string>();
inconsistantIDs.Add("5");
现在我想从pr列表中只获取所有* regid * s,其中包含在inconsistantIDs HashSet中的id,并将它们存储到另一个string类型的HashSet中。
我已经尝试了但只能获得所有在invalidistantIDs列表中具有id的人(这只是一个例子)。
HashSet<person> persons = new HashSet<person>(
pr.Select(p=>p).Where(p=>
inconsistantIDs.Contains(p.id)
));
有人可以帮助我吗?
答案 0 :(得分:2)
var regIDs = from p in pr join id in inconsistantIDs on p.id equals id
select p.regid;
HashSet<string> matchingRegIDs = new HashSet<string>(regIDs); // contains: "5555"
答案 1 :(得分:1)
我不确定你想要的输出是什么,但无论如何我都会尝试:
HashSet<string> persons = new HashSet<string>(
pr.Select(p=>p.regid)
.Where(p=> inconsistantIDs.Any(i=>p.Contains(i))));