使用Lambda表达式C#从表中获取特定的行号

时间:2018-11-11 16:43:59

标签: c# entity-framework lambda

我在c#中使用实体框架。我需要通过ID从表中获取所有记录。我的意思是,当我得到id = 1时,我想获得前20条记录。当我得到id = 2时,我想从记录20到40等中获取记录。 代码:

int id = 1;
int prodId=50;

var prodList =  unitOfWork.ProdTBL.GetAll().ToList().Where(p => p.prodId.Equals(prodId));

如果ID为2,我需要在prodList中仅保留前20条记录(因为现在是id=1),我需要prodList来包含记录[20]至40。

更新

我不希望写GetAll(),因为它需要很长时间(有很多记录)。但是,仅预先获取20条记录,而不是全部记录,然后再获取20条记录。

1 个答案:

答案 0 :(得分:3)

您可以跳过(id-1)*20,然后选择其中20

var prodList =  unitOfWork.ProdTBL.Where(p => p.prodId.Equals(prodId))
         .Skip((id-1)* 20).Take(20).ToList();