2014-10-27 54 views
0

MVC的foreach不同的值我有我的数据库中的表,看起来有点像这样:从数据库

链接

LINKSID

TVID(外键)

季节

情节

链接

现在,我想在我看来foreach语句,使其看起来像这样我的网页上。

季节1

第1集

第2集

第3集

季节2

第1集

第2集

第3集

但是,所有我能得到的是

第1季第1集

第1季第2集

第1季第3集

第2季第1集

第2季第2集

第2季第3集

因此,一些谷歌搜索后,我现在有得到我这样的foreach,但它显然只显示第一集不是我所追求的。

@foreach (var item in Model.Links.GroupBy(x => x.Season).Select(s => s.First())) 
{ 
<p>Season @Html.DisplayFor(modelItem => item.Season) @Html.DisplayFor(modelItem => item.Episode)</p> 
} 

我做错了什么?

+1

- 有你Model.Links.GroupBy(X => X试图@foreach(VAR项目。季节)。选择(s => s))。 - 或者你可以创建一个字典,其中的关键是季节,价值是该季节的所有情节。 – 2014-10-27 03:23:12

+0

如果我使用你提到的foreach,我得到这个错误''System.Linq.IGrouping '没有包含'Season'的定义,也没有扩展方法'Season'接受第一个参数可以找到类型'System.Linq.IGrouping '(你是否缺少使用指令或程序集引用?)'。我如何创建字典的想法,因为我以前从来没有这样做过 – niko619 2014-10-27 03:30:51

回答

2

你想是这样的:

@{ 
    var myList = Model.Links 
     .GroupBy(x => x.Season) 
     .Select(x => new { Season = x.Key, Episodes = x }); 
} 
@foreach (var season in myList) 
{ 
    <strong>Season @Html.DisplayFor(modelItem => season.Season)</strong> 
    foreach(var episode in season.Episodes) 
    { 
     @Html.DisplayFor(modelItem => item.Episode) 
    } 
} 
+0

是的,工作,谢谢。只是为了更好地理解本节实际做了什么? 'Select(x => new {Season = x.Key,Episodes = x});' – niko619 2014-10-27 03:38:52

+0

你指定你从你感兴趣的分组中选择什么。在这种情况下,你需要知道它是什么季节是(所以你选择'x.Key',“季节”,这是你用于分组的关键)。另一件你需要的是分组的结果,这是实际的情节。那么你可以列举每个季节,然后列举组合季节中的每一集。这可能会有所帮助:http://stackoverflow.com/questions/7325278/group-by-in-linq – DLeh 2014-10-27 03:41:14

0

你只是试试这个代码

  @foreach (var item in Model.Links.GroupBy(x => x.Season).tolist())) 
    { 
    Season @Html.DisplayFor(modelItem => item.Season) 

    @foreach (var items in Model.Links.where(z=>z.season==itme.season)) 

    { 
      @Html.DisplayFor(modelItem => item.Episode) 
    } 
    } 
+0

你的格式似乎有点关闭 – 2014-10-27 11:55:45