sql >> Databasteknik >  >> RDS >> Mysql

linq till entitet:linq query prestandaoptimering

Bara en snabb gissning:Count() och ToList() kör båda frågan. Gör först ToList() och använd den mottagna listan för att få antalet element.

Som så:

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. Hur man skapar genväg för SSMS och ansluter till standard SQL Server automatiskt - SQ:Server / TSQL Tutorial Del 4

  2. 3 metoder för att bygga om alla index för alla tabeller med T-SQL i SQL Server Database

  3. Ta bort webbadress från textsträngen

  4. vilken mysql-fråga ska jag använda för att välja en kategori som matchar ALLA mina kriterier?