Боль связывания L2S - PullRequest
0 голосов
/ 02 мая 2011

У меня довольно простая модель:

public class Delivery
{
    public int DeliveryId { get; set; }
    public int OverId { get; set; }
    public int Ball { get; set; }
    public int Runs { get; set; }

    public Player Player { get; set; }
}

Все, что я хочу сделать, - это собрать свою коллекцию объектов Delivery, сгруппированных по Player, чтобы я мог затем выполнить некоторые вычисления статистики для результатов в моем представлении MVC3.

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

Делая это таким образом, почти работает:

var batting = from d in deliveries
              where d.Over.IsBatting == true
              group d by d.Player into player
              select player;

return View(batting);

Но привязки вида беспорядок.Немного помощи?

РЕДАКТИРОВАТЬ: Вот мой взгляд:

@model IEnumerable<IGrouping<Cricket.Models.Player, Cricket.Models.Delivery>>

@{
    ViewBag.Title = "Batting";
}

<h2>Batting</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th></th>
        <th>
            OverId
        </th>
        <th>
            Ball
        </th>
        <th>
            Runs
        </th>
    </tr>

@foreach (var Item in Model) {
    <tr>
        <td>
@*            @Html.ActionLink("Edit", "Edit", new { id=item.DeliveryId }) |
            @Html.ActionLink("Details", "Details", new { id=item.DeliveryId }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.DeliveryId })
*@        </td>
        <td>
            @Item.Key
        </td>
        <td>
            @*item.Ball *@
        </td>
        <td>
            @Item.Sum(x => x.Runs)
        </td>
    </tr>
}

</table>

1 Ответ

1 голос
/ 02 мая 2011

Вы можете создать ViewModel как

public class VMPlayerRuns
{
   public Player _Player{get;set;}
   public int Runs{get;set;}
}

, и вы можете немного изменить свой запрос, например

var batting = from d in deliveries
              where d.Over.IsBatting == true
              group d by d.Player into player
              from p in player  
              select new VMPlayerRuns{Player = p.Key, p.Sum(x=>x.Runs)};

Теперь вы можете привязать эту модель представления к вашему виду, а не к сложной неуклюжей группировке. * Примечание: * Могут быть некоторые синтаксические ошибки в запросе, но это полная идея проецирования группировки на ваши viewmodels

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...