3

私は.Netが初めてです。私は2つのオブジェクトを持って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}
}

2 つのリストがList<Customer>あり、List<Country>.

SQL 結合ステートメントを使用して、顧客と国を一覧表示しています。しかし、顧客と国名を含む単一のリストを作成する方法がわかりません。

そのために別のクラスを作成する必要がありますか?

前もって感謝します。

4

5 に答える 5

7

Customer クラスに国 ID を保存する代わりに、オブジェクト自体を保存します。つまり、次のようにします。

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結果セットの一部として国名を取得すると、1 回のサーバー ラウンド トリップで顧客リストを入力できます。

于 2012-06-13T13:52:47.720 に答える
1

顧客クラスに追加できます

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

データベースから正しい形式でデータを取得できる場合は、必ず最初に取得してください。データはそのために最適化されています。

ただし、2 つのリストがあり、それを操作する必要がある場合は、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クラスを改善して a を参照し、Countryそのインスタンスを返すことができます。

于 2012-06-13T14:02:20.113 に答える
0

Entity Frameworkをご覧になることをお勧めします。

これは Microsoft の Object-Relational-Mapper (ORM) であり、データベース アクセスを抽象化するように設計されています。

于 2012-06-13T13:56:52.790 に答える
0

はい、それぞれ (Customer と Country) の個別のプロパティを含むクラスを作成するか、追加の Country プロパティを含む拡張された顧客クラスを作成する必要があります。

于 2012-06-13T13:52:49.053 に答える