2012-06-13 3 views
3

Я новичок в .Net. У меня есть два объекта, Customer и Country в моем проекте:Создание списка путем объединения двух списков

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 заявление в список клиентов страны. Но я смущен, как создать единый список, содержащий клиентов вместе с именем страны.

Необходимо ли для этого создать отдельный класс?

Заранее спасибо.

ответ

7

Вместо того, чтобы хранить идентификатор страны в своем классе 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 присоединитесь к деревенской таблице и получите название страны как часть результирующего набора, затем вы можете заполнить список клиентов в одном раунде.

0

Да, вам необходимо создать класс, который содержит отдельные свойства для каждого (Заказчик и Страна), или вам необходимо создать расширенный класс клиентов, который содержит дополнительное свойство страны.

1

Вы можете добавить в свой класс клиентов

public Country country { get; set; } 
0

Я предлагаю взглянуть на Entity Framework.

Это объектно-реляционный-сопоставитель Microsoft (ORM) и предназначен для абстрагирования доступа к базе данных так же, как вы пытаетесь сделать.

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 для ссылки на Country и вернуть экземпляр этого.

Смежные вопросы