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

Chúng ta có thể kiểm soát thứ tự biểu thức LINQ với Skip (), Take () và OrderBy ()

Giải pháp thay thế của tôi

Tôi đã xoay sở để giải quyết vấn đề này. Đừng hiểu sai ý tôi ở đây. Tôi vẫn chưa giải quyết được vấn đề ưu tiên, nhưng tôi đã giảm thiểu nó.

Tôi đã làm gì?

Đây là mã tôi đã sử dụng cho đến khi nhận được câu trả lời từ Devart . Nếu họ không thể khắc phục được vấn đề này thì cuối cùng, tôi sẽ phải sử dụng mã này.

// 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();
}

Trước hết, tôi đang nhận được ID sắp xếp của các thực thể của mình. Việc chỉ lấy ID hoạt động tốt ngay cả với tập dữ liệu lớn hơn. Truy vấn MySql khá đơn giản và hoạt động thực sự tốt. Trong phần thứ hai, tôi phân vùng các ID này và sử dụng chúng để lấy các phiên bản thực thể thực tế.

Nghĩ về điều đó, điều này sẽ hoạt động tốt hơn so với cách tôi đã làm lúc đầu (như được mô tả trong câu hỏi của tôi), bởi vì việc nhận tổng số nhanh hơn nhiều do truy vấn được đơn giản hóa. Phần thứ hai thực tế rất giống nhau, ngoại trừ việc các thực thể của tôi được trả về thay vì ID của chúng thay vì được phân vùng bằng cách sử dụng SkipTake ...

Hy vọng rằng ai đó có thể thấy giải pháp này hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. truy vấn để hiển thị bốn dữ liệu ngẫu nhiên từ cơ sở dữ liệu

  2. 1 nhóm chưa liên kết ngay lập tức PersistsVolumeClaims trên Minikube

  3. Làm cách nào để lấy Đầu vào của Hộp văn bản được tạo động trên php và lưu trữ chúng trong MySQL bằng vòng lặp?

  4. Các bảng cơ sở dữ liệu động trong django

  5. không thể đánh rơi khóa ngoại