Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

linq to entity:tối ưu hóa hiệu suất truy vấn linq

Chỉ là phỏng đoán nhanh:Count () và ToList () đều thực thi truy vấn. Thực hiện ToList () trước và sử dụng danh sách đã nhận để tính số lượng các phần tử.

Như vậy:

private List<TNews> GetPagedNews(int pagenum, int pagesize,
    AdvSearcherArgs advcArgs, string keyword)
{
    var dataSrc = _dbRawDataContext.TNews.Where(x => x.Id>0);
    if (!string.IsNullOrWhiteSpace(advcArgs.PMAC))
    {
        dataSrc = dataSrc.Where(m => m.Pmac == advcArgs.PMAC);
    }
    if (!string.IsNullOrWhiteSpace(advcArgs.BegineDate))
    {
        var begin = Convertion.ToDate(advcArgs.BegineDate);
        var end = Convertion.ToDate(advcArgs.EndDate);

        dataSrc = dataSrc.Where(m => m.PmacDT >=begin && m.PmacDT<end);
    }
    dataSrc = dataSrc.OrderByDescending(n => n.PmacDT).Skip(pagenum * pagesize).
      Take(pagesize);

    var myList = dataSrc.ToList(); //execute the query to an in-memory list

    var cnt = myList.Count(); //get the count from the already exeuted query
    SetPagerValues(pagenum, pagesize, cnt);

    return myList; //return the list
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục “ERROR 1222 (21000):Các câu lệnh SELECT đã sử dụng có một số cột khác nhau” khi sử dụng UNION trong MySQL

  2. phân nhóm kho lưu trữ theo năm và tháng bằng php và mysql

  3. MySQL:Các bản ghi được chèn theo giờ, trong 24 giờ qua

  4. MySQL chọn tên cột và giá trị dưới dạng một trường

  5. mysql.connector - Bạn có lỗi trong cú pháp SQL của mình; gần '% s' ở dòng 1