C# 从两个不同的列表创建一个列表
我有两张单子。一份人员名单和一份组织名单。 我想将这些列表相互添加并创建一个新列表,然后将此列表绑定到DropDownList。 值得注意的是,我想在此列表中添加另一个属性,即当我想从DropDownList中选择一个项目时,它会告诉我该项目是个人或组织。C# 从两个不同的列表创建一个列表,c#,asp.net,.net,drop-down-menu,C#,Asp.net,.net,Drop Down Menu,我有两张单子。一份人员名单和一份组织名单。 我想将这些列表相互添加并创建一个新列表,然后将此列表绑定到DropDownList。 值得注意的是,我想在此列表中添加另一个属性,即当我想从DropDownList中选择一个项目时,它会告诉我该项目是个人或组织。 如何创建此列表?重读您的问题,也许您不应该使用Zip(或者可能有比我将要发布的更好的方法使用它) 创建一个单独的类,该类可以同时包含这两个类,如果是个人或组织,则将其标记,然后构建这些类的列表: public class PersonOrga
如何创建此列表?重读您的问题,也许您不应该使用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();
var persons=新列表()
{
新人(),
新人(),
新人()
};
var组织=新列表()
{
新组织(),
新组织()
};
var mergedEntries=
persons.Select(p=>newpersonorganizationentry(p))
康卡特先生(
组织。选择(o=>newpersonorganizationentry(o))
).ToList();
然后,您可以将下拉列表与此
PersonOrganizationEntry
集合绑定。每个“Person”条目都将有一个实例分配给条目的Person
字段,Type
将是PersonOrganizationType.Person
。反之亦然。看看Linq的Zip
功能:首先创建一个类,该类继承自(f.e.OrgUnit
)和一个属性OrgType
。然后你可以使用一个列表作为数据源。你的两个列表是同一类型的吗?@TimSchmelter不确定我是否同意让这两个类型从一个公共类继承只是为了演示目的。@ChrisSinclair:这可能不是他从中受益的唯一地方。