我正在使用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();
}
Onpage load,我需要从列表中获取最新/最后4项
7
8
9
10
OnClick of Load more,我需要获得前4个项目以及最新的4个项目
3
4
5
6
7
8
9
10
答案 0 :(得分:0)
您正在使用Reverse()方法两次。从步骤中移除Reverse()。 像这样:
GetALLComment=GetALLFields.OrderBy(x=>x.createdAt).Skip(PageSize).Take(4).ToList();
GetALLComment.Reverse();
答案 1 :(得分:0)
我不明白为什么你在拿走它们然后再将它们反转后撤回记录,这两个命令会自行取消。
如果您希望最新的记录首先使用OrderByDescending,如果您还想在第二次重新加载时获取8个项目,则需要使用PageSize * 4项
GetALLComment = GetALLFields.OrderByDescending(x=>x.createdAt).Skip(PageSize).Take(PageSize*4).ToList();
然后反转它们以便它们升序
GetALLComment.Reverse();