2010-09-07 7 views
1

Je suis un peu en difficulté en utilisant linq et en retournant une liste en essayant de grouper.Requête Linq Erreur de groupe par ASP.NET MVC 2

À mon avis, je donne les résultats suivants:

<%@ 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> 

et dans mon contrôleur je:

public ActionResult Tenant() 
    { 

     LogEntities db = new LogEntities(); 


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


      return View(s.ToList()); 

    } 

quand je fais une normale sélectionner cela fonctionne:

public ActionResult Tenant() 
     { 

      using (LogEntities db = new LogEntities()) 
      { 

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

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

Pourquoi utiliser Group By ne fonctionne pas et pourquoi est-il si différent? Je veux être en mesure d'afficher les données par groupes. Comment puis-je accomplir cela?

Merci :)

Répondre

1

je pense que pour faire un groupe, vous devez indiquer dans ce que vous avez besoin de regrouper

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

     select us).ToList(); 

Alors us.Key vous donne le nom d'utilisateur par lequel il est groupé et us donne tous les éléments qui sont regroupés par ce nom d'utilisateur.

Ensuite, vous pouvez faire:

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

L'élément de modèle passé dans le dictionnaire est de type « System.Collections.Generic.List'1 [System.Linq.IGrouping'2 [System.String, MvcApplication1. Models.Log]] ', mais ce dictionnaire nécessite un élément de modèle de type' System.Collections.Generic.IEnumerable'1 [MvcApplication1.Models.Log] '. – Mage

+0

Ce qui précède est ce que je reçois – Mage

+0

hey .... donc dans ce cas les opérations suivantes: var s = (à partir de grumes dans db.Logs journaux du groupe par logs.UserName en nous nous choisir) .ToList(); – sTodorov