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

时间:2017-03-22 07:01:24

标签: c# linq

我正在使用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

2 个答案:

答案 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();