我有两个清单。一个Person列表和一个Organization列表。 我想将这些列表相互添加并创建一个新列表,然后将此列表绑定到DropDownList。 值得注意的是,我想在此列表中添加另一个属性,当我想从DropDownList中选择一个项目时,它给我这个项目是Person或Organization。 如何创建此列表?
答案 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
。反之亦然的组织。