0

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

4

1 回答 1

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”条目都会有一个分配给条目Person字段的实例,并且Type将是PersonOrganizationType.Person. 组织反之亦然。

于 2012-10-13T14:38:02.003 回答