在asp.net mvc4中通过查询打印linq组

时间:2014-07-14 17:22:56

标签: c# asp.net linq asp.net-mvc-4

在进行以下查询后,尝试打印linq查询时出现问题

var cargaDatos = (from rs in DB.C_gestcobcanalvendsem
                            group rs by new { rs.semana } into s
                            orderby s.Key
                            select new 
                            {
                              Semana = s.Key,
                              TotalDeuda = s.Sum(x => x.Credito)
                             }
                           ).ToList();

      return View(cargaDatos);

我尝试以推荐的方式打印

<% foreach (var item in Model) { %>
    <tr>
        <td>
            <%: Html.DisplayFor(modelItem => item.Semana) %>
        </td>

<% } %>

或类似的表格,但我找不到要打印的表格。 (可能我做错了,但找不到正确的方法来操纵linq查询whit&#39; group by clause&#39;)。

问候

1 个答案:

答案 0 :(得分:0)

您需要创建一个ViewModel,例如:

//Call it whatever you want
public class ViewModel 
{
    // use whatever types Key and TotalDeuda are
    public int Semana { get; set; }
    public double TotalDeuda { get; set; }
}

然后,您可以在linq查询中使用它来创建强类型列表:

   // Rest of linq as in your question
   select new ViewModel {
                           Semana = s.Key,
                           TotalDeuda = s.Sum(x => x.Credito)
                        }).ToList();

然后在View的顶部,您需要放置一个@model或inherits声明来将模型定义为强类型,设置为IEnumberable<ViewModel> - 或者您称之为类的任何内容。

然后您可以使用以下方式在循环中显示两个属性:

<%foreach (var item in Model)
    {  %>
<tr><td><%=item.Semana%></td>
<td><%=item.TotalDeuda%></td></tr>
<%} %>

如果您能够查看此内容,使用Razor语法也会更容易。有关详细信息,请参阅文章here