从两个不同的列表创建列表

时间:2012-10-13 14:22:20

标签: c# asp.net .net drop-down-menu

我有两个清单。一个Person列表和一个Organization列表。 我想将这些列表相互添加并创建一个新列表,然后将此列表绑定到DropDownList。 值得注意的是,我想在此列表中添加另一个属性,当我想从DropDownList中选择一个项目时,它给我这个项目是Person或Organization。 如何创建此列表?

1 个答案:

答案 0 :(得分:1)

重读你的问题,或许你不应该使用Zip(或者可能有比我即将发布的更好的方式)。

创建一个可以包含两者的单独类,如果它是个人或组织,则标记它,然后构建一个列表:

public class PersonOrganizationEntry
{
    public Person Person { get; private set; }
    public Organization Organization { get; private set; }

    public PersonOrganizationType Type { get; private set; }

    public PersonOrganizationEntry(Person person)
    {
        this.Person = person;
        this.Type = PersonOrganizationType.Person;
    }

    public PersonOrganizationEntry(Organization organization)
    {
        this.Organization = organization;
        this.Type = PersonOrganizationType.Organization;
    }
}

public enum PersonOrganizationType
{
    Person,
    Organization
}

然后将您的列表与此新类型合并:

var persons = new List<Person>()
{
    new Person(),
    new Person(),
    new Person()
};

var organizations = new List<Organization>()
{
    new Organization(),
    new Organization()
};

var mergedEntries = 
        persons.Select(p => new PersonOrganizationEntry(p))
    .Concat(
        organizations.Select(o => new PersonOrganizationEntry(o))
    ).ToList();

然后,您可以将下拉列表绑定到此PersonOrganizationEntry集合。每个“人员”条目都会为条目的Person字段分配一个实例,Type将为PersonOrganizationType.Person。反之亦然的组织。