Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah kita mengontrol urutan ekspresi LINQ dengan Skip(), Take() dan OrderBy()

Solusi solusi saya

Saya telah berhasil mengatasi masalah ini. Jangan salah paham di sini. Saya belum memecahkan masalah prioritas, tetapi saya telah menguranginya.

Apa yang saya lakukan?

Ini adalah kode yang saya gunakan sampai saya mendapat jawaban dari Devart . Jika mereka tidak dapat mengatasi masalah ini, saya harus menggunakan kode ini pada akhirnya.

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

Pertama-tama saya mendapatkan ID yang dipesan dari entitas saya. Hanya mendapatkan ID adalah kinerja yang baik bahkan dengan kumpulan data yang lebih besar. Permintaan MySql cukup sederhana dan berkinerja sangat baik. Di bagian kedua saya mempartisi ID ini dan menggunakannya untuk mendapatkan instance entitas yang sebenarnya.

Memikirkannya, ini seharusnya berkinerja lebih baik daripada cara saya melakukannya di awal (seperti yang dijelaskan dalam pertanyaan saya), karena mendapatkan jumlah total jauh lebih cepat karena kueri yang disederhanakan. Bagian kedua praktis sangat mirip, kecuali bahwa entitas saya dikembalikan oleh ID mereka alih-alih dipartisi menggunakan Skip dan Take ...

Semoga seseorang dapat menemukan solusi ini bermanfaat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jatuhkan kunci unik kolom muli tanpa menjatuhkan kunci asing?

  2. Android mendapatkan data dari tabel MySql

  3. Bagaimana mengelola hak istimewa dengan peran di MySQL

  4. Pendekatan mana yang lebih cepat untuk mendapatkan semua POI dari MySQL/MariaDB dengan PHP/Laravel

  5. Bagaimana Melewati Beberapa Nilai Kotak Centang melalui AJAX dan memprosesnya?|