如何将不同类型的通用列表合并到一个类型的通用自定义列表中?

时间:2011-10-24 09:40:07

标签: c# asp.net generics

假设我有三个不同类型的客户,地址和帐户的通用列表。如何将它们组合成一个'CustomerProfile'类型的通用列表?

Example:
Public class Customer 
{    
    long customerId{ get; set; }    
    int titleId{ get; set; }
        string firstName{ get; set; }
        string middleName{ get; set; }
        int maritalStatusId { get; set; }
}

public class Address
{  
        public long addressId{ get; set; } 
        long customerId{ get; set; } 
        short addressTypeId{ get; set; } 
        string postCode{ get; set; } 
        string geoCodeLattitude{ get; set; } 
        string geoCodeLongitude{ get; set; } 
}  

public class Account
{  
    long accountID{ get; set; } 
        string accountDesc{ get; set; } 
        short accountStatusID{ get; set; } 
        DateTime joinDate{ get; set; } 
        DateTime insertDateTime{ get; set; } 
}  

当我返回新的CustomerProfile列表时,结果集应如下所示:

<CustomerProfile>
<Customer>    
    <customerId>
    <titleId>
        <firstName>
        <middleName>
        <maritalStatusId>
</Customer>
<Address>
        <addressId>
        <customerId>
        <addressTypeId>
        <postCode>
        <geoCodeLattitude>
        <geoCodeLongitude>
</Address>
<Account>
    <accountID>
        <accountDesc>
        <accountStatusID>
        <joinDate>
        <insertDateTime>
</Account>
</CustomerProfile>

2 个答案:

答案 0 :(得分:1)

简短回答,你不能。

您需要使用List<object>来存储它们或创建一个封装客户/地址/帐户的CustomerProfile类。

public class CustomerProfile
{
public Customer { get; set;}
public Address { get; set;}
public Account { get; set:}
}

然后你可以

  

List<CustomerProfile>

答案 1 :(得分:0)

当您说客户,地址和帐户时,您有三个实体。您的两个客户和客户都有关联,但账户没有任何关联,这意味着它可以保存该实体所说的列表中的账户表中的所有账户数据。

首先,您可以在客户类中创建一个属性作为列表来保存其地址。 其次,您可以将另一个属性定义为帐户列表。

当您加载应用程序时,您可以获取所有客户及其地址,并将Cusotmer对象及其地址属性和帐户填入其中。

现在,当您获得客户的对象,然后通过其两个属性地址和帐户,您可以轻松访问其数据。

您还可以创建一个CustomerProfile类,您可以在其中将所有实体定义为列表,然后在运行您的应用程序时,您可以填写其所有属性以访问客户配置文件的对象。