2012-10-13 182 views
0

我有兩個列表。一個人名單和一個組織名單。 我想將這些列表相互添加並創建一個新列表,然後將此列表綁定到DropDownList。 值得注意的是,我想添加另一個屬性到這個列表中,當我想從DropDownList中選擇一個項目時,它給了我這個項目是Person或Organization。 如何創建此列表?從兩個不同的列表創建一個列表

+2

看看Linq的'Zip'函數:http://msdn.microsoft.com/en-us/library/dd267698.aspx –

+1

從創建一個類,它都從(fe' OrgUnit')繼承屬性'OrgType'。然後你可以使用'List '作爲DataSource。 –

+0

你的兩個相同類型的列表? – jams

回答

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。反之亦然組織。