Mysql
 sql >> база данни >  >> RDS >> Mysql

Можем ли да контролираме реда на изразите на LINQ с Skip(), Take() и OrderBy()

Моето заобиколно решение

Успях да заобиколя този проблем. Не ме разбирайте погрешно тук. Все още не съм разрешил проблема с приоритета, но го смекчих.

Какво направих?

Това е кодът, който използвах, докато не получа отговор от Devart . Ако не могат да преодолеят този проблем, накрая ще трябва да използвам този код.

// get ordered list of IDs
List<int> ids = ctx.MyEntitySet
    .Include(/* Related entity set that is needed in where clause */)
    .Where(/* filter */)
    .OrderByDescending(e => e.ChangedDate)
    .Select(e => e.Id)
    .ToList();

// get total count
int total = ids.Count;

if (total > 0)
{
    // get a single page of results
    List<MyEntity> result = ctx.MyEntitySet
        .Include(/* related entity set (as described above) */)
        .Include(/* additional entity set that's neede in end results */)
        .Where(string.Format("it.Id in {{{0}}}", string.Join(",", ids.ConvertAll(id => id.ToString()).Skip(pageSize * currentPageIndex).Take(pageSize).ToArray())))
        .OrderByDescending(e => e.ChangedOn)
        .ToList();
}

Преди всичко получавам поръчани идентификационни номера на моите юридически лица. Получаването само на идентификатори е добре работещо дори при по-голям набор от данни. MySql заявката е доста проста и се представя много добре. Във втората част разделям тези идентификатори и ги използвам, за да получа действителни екземпляри на обекти.

Като се замисля, това би трябвало да работи дори по-добре от начина, по който го правех в началото (както е описано във въпроса ми), защото получаването на общия брой е много много по-бързо поради опростената заявка. Втората част на практика е много подобна, с изключение на това, че моите обекти се връщат по-скоро от техните идентификатори, вместо да се разделят с помощта на Skip и Take ...

Надяваме се, че някой може да намери това решение за полезно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете се с MySQL в MAMP

  2. Първо се връщат ТОЧНИ съвпадения от пълнотекстово търсене?

  3. MySQL - намерете разликата между редовете на една и съща таблица

  4. Как да конвертирам този подготвителен израз за използване на заместители в Wordpress $wpdb?

  5. Тип данни на SQL за съхраняване на версии на компилация