2014-10-23 1 views
0

У меня есть MVC 5 с Entity Framework 6. Я пытался понять это, используя LINQ в виде бритвы, и я не получаю результатов.Показать этот SQL в MVC View

Как получить этот T-SQL

SELECT 
rt.Name, 
COUNT(r.RTypeID) 
RTypID 
FROM dbo.Request r 
JOIN dbo.RType rt 
ON r.RTypeID = rt.RTypeID 
GROUP BY rt.Name, r.RTypeID 

, который возвращает эти результаты ...

Name    RtypeID 
Change Request 42 
New Request  386 
Re-Run   28 
other    1 

Вот две модели я создал Для к.т.

namespace DBMR.Models 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.Linq; 

    public partial class RType 
    { 
     public RType() 
     { 
      this.Requests = new HashSet<Request>(); 
      this.RequestInputs = new HashSet<RequestInput>(); 
     } 

     public int? RTypeID { get; set; } 
     [Display(Name = "Request Type:")] 
     public string Name { get; set; } 
     public Nullable<bool> IsSelected { get; set; } 

     public virtual ICollection<Request> Requests { get; set; } 
     public virtual ICollection<RequestInput> RequestInputs { get; set; } 
    } 
} 

за r

namespace DBMR.Models 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.Linq; 

    public partial class Request 
    { 
     public int RequestID { get; set; } 
     public string JobID { get; set; } 
     public string Title { get; set; } 
     public int StatusID { get; set; } 
     public int? RTypeID { get; set; } 
     public int UrgencyID { get; set; } 
     public int CategoryID { get; set; } 
     public int DTypeID { get; set; } 
     public int ResolutionID { get; set; } 
     public int AnalystID1 { get; set; } 
     [DataType(DataType.Date)] 
     public int AnalystID2 { get; set; } 
     public Nullable<System.DateTime> OpenDT { get; set; } 
     [DataType(DataType.Date)] 
     public Nullable<System.DateTime> CloseDT { get; set; } 
     public int AnalystID3 { get; set; } 


     public virtual Analyst Analyst { get; set; } 
     public virtual Analyst Analyst1 { get; set; } 
     public virtual Analyst Analyst2 { get; set; } 
     public virtual Category Category { get; set; } 
     public virtual DType DType { get; set; } 
     public virtual Resolution Resolution { get; set; } 
     public virtual RType RType { get; set; } 
     public virtual Status Status { get; set; } 
     public virtual Urgency Urgency { get; set; } 
    } 
} 

Просто пытайтесь создать страницу в моем приложении MVC, которая отображает эту сводную таблицу.

Каков наилучший способ для этого?

ответ

0

Контроллер:

//Create your context 
using(var ctx = new MyDbContext()) 
{ 
    var items = ctx.Requests 
     .GroupBy(r => new { r.RType.Name, r.RTypeID }) 
     .Select(r => new MyRequestData 
      { 
       Name = r.RType.Name, 
       Count = r.Count() 
      }); 
    return View(items); 
} 

класс для хранения данных

public class MyRequestData 
{ 
    public string Name { get; set; } 
    public int Count { get; set; } 
} 

Вид:

<table> 
    <tr> <th> Heading 1 </th> <th> Heading 2</th> </tr> 
    @foreach(var item in Model) 
    { 
     <tr> <td>@item.Name</td> <td>@item.Count</td></r> 
    } 
</table> 
+0

насчет контроллера? –

+0

Я обновил свой ответ, чтобы показать, как вы можете написать свой запрос в Linq и предоставить его представлению с контроллера. – DLeh

+0

Где вы принимаете участие? Имена r.RType.Name и r.RTypeID вытягиваются из разных таблиц. –

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