3

我是.Net 的新手。我有两个对象,CustomerCountry我的项目中:

public class Customer
{
  public int CustomerId {get;set;}
  public string CustomerName {get;set}
  public String Street {get;set}
  public String Address {get;set}
  public int CountryId {get;set}
  //...o
}


public class Country
{
  public int CountryId {get;set;}
  public String CountryName{get;set}
}

我有两个列表,List<Customer>并且List<Country>.

我正在使用 sql join 语句来列出国家/地区的客户。但我很困惑如何创建一个包含客户和国家名称的列表。

是否有必要为此创建单独的类?

提前致谢。

4

5 回答 5

7

无需将国家/地区 ID 存储在您的 Customer 类中,只需存储对象本身。也就是说,让它像这样:

public Class Customer
{
public int CustomerId {get;set;}
public string CustomerName {get;set}
public String Street {get;set}
public String Address {get;set}
public Country Country {get;set}
//...o
}

然后你的Customer对象中就有了所有需要的信息,并且没有必要尝试合并列表或类似的东西。

在您的SQL声明中,加入国家/地区表并获取国家/地区名称作为结果集的一部分,然后您可以在一次服务器往返中填充客户列表。

于 2012-06-13T13:52:47.720 回答
1

您可以添加到您的客户类别

public Country country { get; set; }
于 2012-06-13T13:54:37.493 回答
1

如果您可以从数据库中获取正确格式的数据,请务必先这样做!数据为此进行了优化。

但是,如果您有两个列表并且需要使用它,那么 LINQ 应该会有所帮助。你可以这样做:

var query = from customer in customers
            from country in countries
            where customer.CountryId == country.CountryId
            select new
            {
                Customer = customer,
                Country = country
            };

这将给出一组匿名对象,其中一个Customer属性持有一个客户,一个Country属性持有匹配的国家/地区。

如果您真的需要使用List<>您可以随时编写的类型query.ToList()

如果匿名类型不适合您,您可以创建一个新类,或者改进Customer该类以引用 aCountry并返回它的实例。

于 2012-06-13T14:02:20.113 回答
0

是的,您需要为每个(客户和国家/地区)创建一个包含单独属性的类,或者您需要创建一个包含附加国家/地区属性的增强型客户类。

于 2012-06-13T13:52:49.053 回答
0

我建议看一下Entity Framework

它是 Microsoft 的 Object-Relational-Mapper (ORM),专为抽象数据库访问而设计,就像您尝试做的那样。

于 2012-06-13T13:56:52.790 回答