Использование VBNET, MVC 3 и Entity Framework для написания моего первого mvc-приложения - однопользовательского блогового приложения. Я пытаюсь создать архивную боковую панель, которая будет отображать что-то вроде октября 2011 года, и когда пользователь нажмет кнопку, он увидит все сообщения в октябре. Прямо сейчас все мои попытки показывают либо повторяющиеся даты - если в октябре есть 3 сообщения, то я вижу октябрь 2011 3 раза или я возвращаюсь только один месяц год, комбо скажем октябрь 2011.
Используя groupby с firstordefault, я вернусь только на один месяц назад.
posts = _rdsqlconn.Posts.Where(Function(p) p.PostIsPublished = True).GroupBy(Function(d) d.PostDatePublished).FirstOrDefault
Как мне вернуть уникальные комбинации месяца и года с EF?
<ч />
Дополнительная информация
У меня есть эта функция в моем хранилище. Я хочу собрать пары месяц и год, чтобы у меня была только одна пара, скажем, ocotober, даже если в октябре было 3 поста.
В хранилище:
Public Function SelectPostsByDate() As IEnumerable(Of Entities.Post) Implements Interfaces.IPostRepository.SelectPostsByDate
Using _rdsqlconn As New RDSQLConn
Dim posts
posts = _rdsqlconn.Posts.Where(Function(p) p.PostIsPublished = True).GroupBy(Function(p) New With {p.PostDateCreated.Year, p.PostDateCreated.Month}).Select(Function(g) g.Key)
'posts = _rdsqlconn.Posts.Where(Function(p) p.PostIsPublished = True).GroupBy(Function(p) New With {p.PostDatePublished.Value.Year, p.PostDatePublished.Value.Month})
Return posts
End Using
End Function
В моем контроллере у меня есть
Function DateViewPartial() As PartialViewResult
Return PartialView(_postRepository.SelectPostsByDate)
End Function
Мой частичный вид:
@ModelType IEnumerable (of RiderDesignMvcBlog.Core.Entities.Post)
<hr />
<ul style="list-style: none; margin-left:-35px;">
@For Each item In Model
@<li> @Html.ActionLink(item.PostDatePublished.Value.ToString("Y"), "Archives", "Blog", New With {.year = item.PostDatePublished.Value.Year, .month = item.PostDatePublished.Value.Month}, Nothing)</li>
Next
</ul>
В _Layout.vbhtml я вызываю частичное представление для отображения на боковой панели:
<h3>Posts by Date</h3>
@code
Html.RenderAction("DateViewPartial", "Blog")
End Code