从列表中按升序获取最新/最后一项



我正在使用 LINQ 查询,并且正在按升序获取项目列表。我需要从该列表中获取最新的 4 个项目。

我有"加载更多"按钮,单击该按钮应该从该列表中获取前 4 个项目。

var GetALLFields =(from post in dbContext.PostTable
join com in dbContext.CommentTable on post.PostID equals com.PostedId
join user in dbContext.UserTable on com.commenterID equals user.userId
where (com.PostedId == PostID)
select new
{
PostId = post.PostID,
commentId = com.commentID,
CommenterID = user.userId,
name = user.Name,
commenterUserName = user.userName,
Imagebase64 = user.userImageBase64,
ImageType = user.userImagetype,
commentId = post.PostedDataID,
        commentcreatedAt = com.createdAt,
commenterDelete = com.commenterDelete,
});  

if (GetALLFields != null)
{
//PageSize I am getting from ajax (first it be 0 then pageSize will be multple of 4)
GetALLComment = GetALLFields.OrderBy(x=>x.createdAt).Skip(PageSize).Take(4).Reverse().ToList();
GetALLComment.Reverse();
}

页面加载,我需要从列表中获取最新/最后 4 个项目

7
8
9
10

点击加载更多,我需要获取前 4 个项目以及最新的 4 个项目

3
4
5
6
7
8
9
10

你使用 Reverse() 方法两次。从其中一个步骤中删除 Reverse()。 喜欢这个:

GetALLComment=GetALLFields.OrderBy(x=>x.createdAt).Skip(PageSize).Take(4).ToList();
GetALLComment.Reverse();

我不明白为什么你在获取记录后要反转记录,然后再次反转它们,这两个命令会自行抵消。

如果您想要先获取最新记录,只需使用 OrderByDescending,如果您还想在第二次重新加载时获取 8 个项目,则需要获取 PageSize*4 个项目

GetALLComment = GetALLFields.OrderByDescending(x=>x.createdAt).Skip(PageSize).Take(PageSize*4).ToList();

然后反转它们,使它们上升

GetALLComment.Reverse();

最新更新