1

我有某个类的列表对象类型,

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,并将它们存储到另一个字符串类型的 HashSet 中。

我已经尝试过,但只能获取所有在 inconsistantIDs 列表中具有 id 的人(这只是一个示例)。

 HashSet<person> persons = new HashSet<person>(
            pr.Select(p=>p).Where(p=>
                    inconsistantIDs.Contains(p.id)
                ));

有人可以帮我吗?

4

2 回答 2

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"
于 2013-10-23T08:45:41.687 回答
1

我不确定您想要的输出是什么,但无论如何我都会尝试:

HashSet<string> persons = new HashSet<string>(
            pr.Select(p=>p.regid)
              .Where(p=> inconsistantIDs.Any(i=>p.Contains(i))));
于 2013-10-23T08:44:40.643 回答