0

私は2つのリストを持っています。個人の1つのリストと組織の1つのリスト。これらのリストを相互に追加して新しいリストを作成し、このリストを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 に答える