我正在开发MVC应用程序。 我在数据库中有大约8000条记录。
我使用MVC.Grid来显示这些记录。 我的问题是,我在控制器方法中加载了所有8000条记录。 我想以页面方式或部分记录来获取它,例如每次100条记录......
怎么做?
public ActionResult Index(int? page, string searchContent = "")
{
ProductService productService = new ProductService();
var pageNumber = (page ?? 1);
var pagesize = 15;
int id = Convert.ToInt32(Session["loggedEmpId"]);
CommonService.SetEmployeeId(id);
ProductService ProductService = new ProductService();
var productList = ProductService.GetProductInventory();
LocationService locationservice = new LocationService();
var loclist = locationservice.GetAll().Where(x => x.Type != LocationTypeDTO.HO).ToList();
ViewBag.loc = loclist;
ViewBag.SearchContent = searchContent;
return View(productList.ToPagedList(pageNumber, pagesize));
}
public IEnumerable<ProductDTO> GetProductInventory()
{
List<ProductDTO> ProductDTOList = new List<ProductDTO>();
UnitOfWork uow = new UnitOfWork();
IEnumerable<Product> ProductList = uow.ProductRepo.GetInventoryList();
foreach (Product product in ProductList)
{
ProductDTO productDTO = Transform.Product2DTO(product);
ProductDTOList.Add(productDTO);
}
return ProductDTOList;
}
答案 0 :(得分:1)
如果您只想从数据库中获取前100条记录,那么您可以更改服务方法,如 -
var loclist = locationservice.GetAll().Where(x => x.Type != LocationTypeDTO.HO).Take(100).ToList();
答案 1 :(得分:0)
99%的百分比你不应该显示所有8000条记录。
您应该使用pagination。您应该在操作中获得100条记录并显示它。
<强>更新强> 你有非常混乱和错误的代码。 您应该使用Take()和Skip()来处理您的请求。
我不知道ToPagedList
方法