2016-08-22 4 views
-1

Я хочу объединить результаты двух классов с помощью Linq и отобразить результат на виде?Объединить два результата класса модели и отобразить его на 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.

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()); 
     } 

Показать ниже данных столбцов таблицы в View PRODUCTID, ProductName, Цена, ManufactureBy

ответ

0

Создание модели представления для этой точки зрения и назначить ваш LINQ присоединиться результат запроса к списку, что и передать в Посмотреть.

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> 
    } 
}