1

次の単純な「教科書」クラスが定義されています。

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Category { get; set; }
    }

    public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

Product の Category フィールドは、Category クラスの Id フィールドを参照する整数です。データベースでは、Product テーブルと Category テーブルの間の外部キー リレーションシップになります。

しかし、私のアプリケーションでは、製品のカテゴリのフレンドリ名を表示する必要があります。

Q1 : 次のように新しいクラスを定義するのは正しい方法ですか?

    public class ProductJ : Product
    {
        public string CategoryName { get; set; }
    }

そして、次のような getProductsJ メソッドがあるとします。

    public class Test
    {
        public List<Category> Categories = new List<Category>() { ... };
        public List<Product> Products = new List<Product>() { ... };

        public List<ProductJ> getProductsJ()
        {
            var products = from p in Products
               join c in Categories on p.Category equals c.Id
               select new ProductJ { Id = p.Id, , Name = p.Name, CategoryName = c.Name }; //!
            return products.ToList();
        }
    }

Q2 : カテゴリ名を持つ製品のリストを取得するには、上記の方法が最適ですか?

Q3 : select ステートメント (//!) で、基本クラス Product linq のフィールドを 1 つずつ入力することなく、より速く入力する方法はありますか?

ありがとう。

4

2 に答える 2

1

結合の結果を、製品とカテゴリの両方への参照を含むオブジェクトに投影できます。

public class Product
{
  public int Id { get; set; }
  public string Name { get; set; }
  public int Category { get; set; }
}

public class Category
{
  public int Id { get; set; }
  public string Name { get; set; }
}

public class ProductCategory
{
  public Product Product { get; set; }
  public Category Category { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    List<Category> Categories = new List<Category>();
    List<Product> Products = new List<Product>();

    var products = from p in Products
                   join c in Categories on p.Category equals c.Id
                   select new ProductCategory { Product = p, Category = c };

    var list = products.ToList();
  }
}
于 2012-04-13T17:07:32.703 に答える
0

各本は1つのカテゴリに属しますか、それともあなたの場合は複数のカテゴリに属する​​ことができますか?なぜなら、本が1つのカテゴリに属している場合は、ブックテーブルでカテゴリ名を移動するだけです。また、私は見てみるように提案します

MVCLINQからSQLテーブルへの結合レコードの表示

于 2012-04-13T16:46:18.157 に答える