Linq запрос группы по ошибке в ASP.NET MVC 2 - PullRequest
1 голос
/ 07 сентября 2010

У меня проблемы с использованием linq и возвращением списка при попытке группировки.

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

<%@ 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 Ответ

1 голос
/ 07 сентября 2010

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

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...