2010-09-07 3 views
1

У меня есть немного борьбы с использованием linq и возврата списка при попытке группировки.Группа запросов Linq По ошибке в ASP.NET MVC 2

На мой взгляд, я следующее:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Log>>" %> 
<table> 
     <tr> 
      <th> 
       ID 
      </th> 
      <th> 
       User 
      </th> 
      <th> 
       NumberDialed 
      </th> 
      <th> 
       Date 
      </th> 
     <th> 
       Time 
      </th> 
      <th>&nbsp;</th> 
     </tr> 
<% foreach (var item in Model) 
{ %> 
<tr> 
<td> 
<%: item.ID %> 
</td> 
<td> 
<%: item.UserName %> 
</td> 
<td> 
<%: item.NumberDialed %> 
</td> 
<td> 
<%: item.Date %> 
</td> 
<td> 
<%: item.Time %> 
<%} %> 
</td> 
</table> 

и в мой контроллер у меня есть:

public ActionResult Tenant() 
    { 

     LogEntities db = new LogEntities(); 


      var s = from logs in db.Logs 
        group logs by logs.UserName; 


      return View(s.ToList()); 

    } 

когда я нормальный выбрать это работает:

public ActionResult Tenant() 
     { 

      using (LogEntities db = new LogEntities()) 
      { 

       var s = from logs in db.Logs 
         orderby logs.UserName 
         select logs; 

       return View(s.ToList()); 
      } 
     } 

Почему использование Group By не работает и почему это так отличается? Я хочу иметь возможность отображать данные по группам. Как это сделать?

Спасибо :)

ответ

1

Я думаю, что для того, чтобы сделать группу, которую нужно указать в то, что вам это нужно, чтобы быть сгруппированы

var s = (from logs in db.Logs 
     group logs by logs.UserName into us 

     select us).ToList(); 

Тогда us.Key дает имя пользователя, с помощью которого она группируется и us содержит все элементы, сгруппированные по этому имени пользователя.

Тогда вы можете сделать:

foreach(var userGroup in s){ 
var userName = us.Key; 
var logs = us.ToList(); 
} 
+0

Модель элемент передается в словарь типа «System.Collections.Generic.List'1 [System.Linq.IGrouping'2 [System.String, MvcApplication1. Models.Log]] ', но для этого словаря требуется элемент модели типа «System.Collections.Generic.IEnumerable'1 [MvcApplication1.Models.Log]». – Mage

+0

Выше было то, что я получаю – Mage

+0

эй .... поэтому в этом случае попробуйте следующее: var s = (из журналов в db.Logs журналов групп по logs.UserName в нас выберите нас) .ToList(); – sTodorov

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