Как передать результат с несколькими столбцами в бритву - PullRequest
0 голосов
/ 08 июня 2018

Когда вы группируете список по нескольким датам.

var groupedResult = myData.GroupBy(x => new { x.Date1, x.Date2 });

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

IEnumerable<IGrouping<'a, MyDataViewModel>> groupedResult

, но как мне передать это в мое представление Razor, я попытался

@model IEnumerable<IGrouping<<DateTime, DateTime>, MyDataViewModel>

или

@model IEnumerable<IGrouping<new <DateTime, DateTime>, MyDataViewModel>

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

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Используя класс Tuple, он может быть таким, как вы хотите.

var groupedResult = myData.GroupBy(x => Tuple.Create(x.Date1, x.Date2));

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

@model IEnumerable<IGrouping<Tuple<DateTime, DateTime>, MyDataViewModel>

Можно получить групповые ключикак показано ниже.

<table>
@foreach (var d in @Model)
{
    <tr><th>@d.Key.Item1</th><th>@d.Key.Item2</th></tr>
}
</table>
0 голосов
/ 08 июня 2018

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

Модель

public class GroupedPlanningViewModel
{
    public DateTime FromDate { get; set; }
    public DateTime StopDate { get; set; }
    public List<MyPlanningViewModel> Planning { get; set; }
}

Заполнение ее в контроллере

        var viewModel = from plan in myPlannings
            group plan by new
            {
                plan.StartBlock,
                plan.StopBlock
            }
            into f
            select new GroupedPlanningViewModel()
            {
                FromDate = f.Key.StartBlock,
                StopDate = f.Key.StopBlock,
                Planning = f.ToList()
            };
        return View(viewModel);

Затем я добавил это в качестве модели в окне Razor

@model IEnumerable<myProject.ViewModels.GroupedPlanningViewModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...