2016-08-22 16 views
-1

Linqを使用して2つのクラスの結果を結合し、その結果をビューに表示したいですか?2つのモデルクラスの結果を結合してView-MVCに表示

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.ComponentModel.DataAnnotations.Schema; 
    using System.Data.Entity.Spatial; 

    [Table("ProductMaster")] 
    public partial class ProductMaster 
    { 
     public ProductMaster() 
     { 
      ProductDetails = new HashSet<ProductDetail>(); 
     } 

     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.None)] 
     public int ProductId { get; set; } 

     [StringLength(50)] 
     public string ProductName { get; set; } 

     public virtual ICollection<ProductDetail> ProductDetails { get; set; } 
    } 


using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.ComponentModel.DataAnnotations.Schema; 
    using System.Data.Entity.Spatial; 

    public partial class ProductDetail 
    { 
     public int? Price { get; set; } 

     [StringLength(50)] 
     public string ManufactureBy { get; set; } 


     public int? ProductId { get; set; } 

     [Key] 
     public int ProdDetailsId { get; set; } 

     public virtual ProductMaster ProductMaster { get; set; } 
    } 

LINQクエリを使用して2つのテーブルデータを結合します。ビュー のProductId、商品名、価格、ManufactureBy

答えて

0

内のデータは、このビューのビューモデルを作成し、LINQは、そのリストにクエリ結果を参加しにそれを渡す割り当てるテーブルの列以下

public ActionResult BindProductMasterData() 
     { 
      Model1 db = new Model1(); 
      var varResult = from pm in db.ProductMasters join pd in db.ProductDetails on pm.ProductId equals pd.ProductId select new { pm.ProductId, pm.ProductName, pd.Price, pd.ManufactureBy }; 
      return View(varResult.ToList()); 
     } 

表示ビュー。

public class ProductVm 
{ 
    public int Id { set;get;} 
    public string Name { set;get;} 
    public List<ProductDetailVm> Details { set;get;} 
} 
public class ProductDetailVm 
{ 
    public int Id { set;get;} 
    public int? Price { get; set; } 
    public string ManufactureBy { get; set; } 
} 

アクションメソッドで、LINQクエリの結果をProductVmオブジェクトのリストに投影します。

public ActionResult BindProductMasterData() 
{ 
    Model1 db = new Model1(); 
    var varResult = db.ProductMasters 
        .Select(f => 
       new ProductVm 
       { 
        Id = f.ProductId, 
        Name = f.ProductName, 
        Details = f.ProductDetails.Select(g => new ProductDetailVm 
               { 
                Id = g.ProdDetailsId , 
                Price = g.Price, 
                ManufactureBy = g.ManufactureBy 
               } 
             ).ToList() 
       }).ToList(); 
    return View(varResult); 
} 

今、あなたのビューが強く、当社のProductVmビューモデル

@model List<ProductVm> 
@foreach(var p in Model) 
{ 
    <h4>@p.ProductName</p> 
    <p>Details</p> 
    @foreach(var d in p.Details) 
    { 
    <p>@d.ManufacturedBy</p> 
    <p>@d.Price</p> 
    } 
} 
のリストに型付けされていることを確認します
関連する問題