LINQ groupby to List <list <object>&gt;

时间:2017-03-28 18:04:14

标签: c# asp.net-mvc linq

我有一个ASP.NET MVC视图,我使用LINQ将模型拆分为多个对象列表。

下面的代码的工作原理是我在var data中获得了正确的对象列表,但我无法将其转换为我的对象来访问属性。我收到错误

  

无法投射类型的对象   '分组并[d&GT; f__AnonymousType3'2 [System.DateTime的,System.String],MVCProj.Models.tblData2017]'   输入'MVCProj.Models.tblData2017

Index.cshtml查看:

@model IEnumerable<MVCProj.Models.tblData2017>

@{
    ViewBag.Title = "Index";
}

<h2>Title</h2>
@{
    var data = Model.Where(x => x.Start.Date == DateTime.UtcNow.Date)
                    .GroupBy(x => new { x.Start, x.Field2 }).ToList();
    for (int i = 0; i < data.Count; i++)
    {
        var rowItem = (List<tblCards2017>)data[i]; //<-Error on this line
        string header1 = $"{rowItem.Start.ToString("HH:mm")} {rowItem.Field2}";
    }
}

如何执行以下任一操作

i)成功投射var rowItem = (List<tblCards2017>)data[i];

ii)使用linq获取正确的对象类型List<List<tblCards2017> data = Model.Where.....而不是当前类型var data = System.Collections.Generic.List<System.Linq.IGrouping<<>f__AnonymousType2<System.DateTime, string>, MVCProj.Models.tblData2017>>

1 个答案:

答案 0 :(得分:6)

我想你是这样看的:

var data = Model.Where(x => x.Start.Date == DateTime.UtcNow.Date)
                .GroupBy(x => new { x.Start, x.Field2 })
                .Select(g=>g.ToList()).ToList();

添加Select调用以获取每个组的列表