不能将带有 [] 的索引应用于类型 'IOrderedEnumerable<DateTime>' 的表达式



我的项目中有画廊,我想按上传日期对其进行分组,例如,如果页面= 1,它应该显示2019/1/2图片,如果页面= 2,它应该显示2019/1/4图片,但我做不到。它说我无法选择Dates[Page - 1].

public IEnumerable<GalleryPictures> GetGalleryByDates(int Page)
{
var AllGalleryPictures = GetAllGalleryPictures();
var Dates = AllGalleryPictures.Select(p => p.UploadDate).ToList().Distinct().OrderByDescending(p=>p);
return AllGalleryPictures.Where(p => p.UploadDate == Dates[Page - 1]);
}

这将解决您的问题:

var Dates = AllGalleryPictures.Select(p => p.UploadDate).Distinct().OrderByDescending(p=>p).ToList();

另请阅读有关 IEnumerable 和 LINQ 的更多信息

接受的答案使用ToList,它具体化查询 - 也就是说,它分配一个 List 并为序列中的每个可能元素执行查询表达式。

在您的情况下,这不太可能导致显著的性能损失,但如果您正在编写大型复杂查询,则可能会使应用程序执行大量工作来创建永远不会使用的结果对象,从而影响性能。

若要缓解此问题,可以使用ElementAt仅访问实际需要的元素。但是请注意,您已经在代码示例中通过调用上一行的 ToList 使其无关紧要。

相关内容

  • 没有找到相关文章

最新更新