按ID过滤对象集合

时间:2010-12-20 10:54:59

标签: c# collections filter

自学一些c#,我的问题是我有一个创建Person对象的类并将它们添加到List(myPersonList)。我还有一个PartyGroup类,它将PersonList作为其属性之一。我的问题是myPersonList包含整个结果集,因此每当它创建一个新的PartyGroup时,它会添加myPersonList中的所有值。有没有办法告诉它只在myPersonList中添加那些值,其中Person.PartyGroupId与我们正在处理的当前PartyGroup groupID匹配。希望有道理。感谢。

//人

using (AseDataReader reader = commandPerson.ExecuteReader())

        {
            while (reader.Read())
            {
                Person person = new Person();
                person.PersonID = Convert.ToInt32(reader["person_id"]);
                person.PartyGroupID = Convert.ToInt32(reader["party_group_id"]);
                person.FullName = reader["full_name"].ToString();

                myPersonList.Add(person);
            }
        }

// PartyGroup

using (AseDataReader reader = commandPartyGroup.ExecuteReader())

        {
            while (reader.Read())
            {
                int groupId = Convert.ToInt32(reader["party_group_id"]);

                if (myPartyGroupList.Where(partyGroup => partyGroup.PartyGroupID == groupId).Any() == false) 
                {
                    PartyGroup partyGroup = new PartyGroup()
                    {
                        PartyGroupID = groupId,
                        PartyGroupName = reader["party_group_name"].ToString(),
                        PersonList = myPersonList//where PersonList objects contain this groupId???


                    };

                    myPartyGroupList.Add(partyGroup);

                }

            }

        }

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你只需要:

PersonList = myPersonList.Where(p => p.PartyGroupID == groupId).ToList();