我一直在寻找所有的stackoverflow.com和Interwebz找出如何使用Linq Distinct()
,但我没有任何运气与我的情况。Linq声明截然不同日期
我想要做的是显示日期列表(2015年8月,2015年7月等),每个日期只显示一次。
会发生什么情况是月份重复,因为您可以在一个月内多次发布新博客文章。我认为使用Distinct会有所帮助,但它似乎没有做任何事情。当我尝试添加GroupBy()
时,我的OrderByDescending
停止工作,并且我没有足够的经验来简单地将它变成IList
,我在其他示例中看到过。
BlogRepeater.DataSource = _PostRepository.GetAll(ConfigurationManager.GetSiteID())
.Where(x => x.DatePublished != null && x.DatePublished >= DateTime.Now.AddYears(-1))
.Distinct().OrderByDescending(x => x.DatePublished)
.Select(x => x.DatePublished.Value.Date);
这样做的最好方法是什么?
我试过从其他例子中取出一些零件,无济于事。提前致谢。
更新:感谢您的帮助!这是工作代码,希望它可以在未来帮助其他人。
代码背后:
BlogRepeater.DataSource =
_PostRepository
.GetAll(ConfigurationManager.GetSiteID())
.Where(x => x.DatePublished != null && x.DatePublished >= DateTime.Now.AddYears(-1) && x.Status == "Published")
.Select(x => x.DatePublished.Value.ToString("MMM yyyy"))
.Distinct()
.OrderBy(x => x);
BlogRepeater.DataBind();
前端:
<a href="/Blog/Archive/<%#(Container.DataItem)%>"><%#(Container.DataItem)%></a>
看起来很简单,但是当我这样做时,代码会忘记DatePublished是什么。 'System.DateTime'不包含'DatePublished'的定义,并且没有找到接受'System.DateTime'类型的第一个参数的扩展方法'DatePublished'。它只是让我使用OrderByDescending作为查询的第一部分之一。 – jlg
@jlg是的,对不起,我忘记了相应地更新'OrderByDescending'子句。查看我的答案更新。 – GolfWolf
感谢您的清理!查询能够运行,但“Distinct()”仍然不起作用。检查我添加到帖子中的图像。 – jlg