orderby ve group Önceliği

LINQ sorgusunda, orderby ve group birlikte kullanılıyorsa bir hususa dikkat etmek gerekiyor.
Veri tabanımızda şöyle bir tablomuz olsun:
Id | INT |
Seviye | VARCHAR |
Oncelik | INT |
Tablomuza 4 adet veri ekleyelim:
Id | Seviye | Oncelik |
---|---|---|
1 | 10 | 11000 |
2 | 11 | 12000 |
3 | 12 | 13000 |
4 | 9 | 10000 |
Ve şimdi verileri Oncelik bilgisine göre sıralayıp gruplayan 2 adet LINQ sorgusu yazalım:
(Zaten 4 adet veri var ve bunların zaten Id leri farklı, gruplamaya gerek yok demeyin. Gerçekte, başka tablo alanları ve çok daha fazla veri mevcuttu. Sadece durumu izah edebilmek için tabloyu ve verileri azalttım.)
var liste1 = (from x in seviyeler orderby x.Oncelik group x by new { x.Id, x.Seviye } into g select new { g.Key.Id, g.Key.Seviye }).ToList();
var liste2 = (from x in seviyeler group x by new { x.Id, x.Seviye,x.Oncelik } into g orderby g.Key.Oncelik select new { g.Key.Id, g.Key.Seviye }).ToList();
Sorguları inceleyince, ilk sorguda verileri sıralayıp grupladığımızı, ikinci sorguda gruplayıp sıraladığımızı düşünüyoruz.
Ancak sorgu sonuçlarına baktığımızda yanıldığımızı farkediyoruz:
liste1 | |
Id | Seviye |
---|---|
1 | 10 |
2 | 11 |
3 | 12 |
4 | 9 |
liste2 | |
Id | Seviye |
---|---|
4 | 9 |
1 | 10 |
2 | 11 |
3 | 12 |
Bu sonuçlara göre, verileri doğru sırada görüntülemek için önce gruplayıp sonra sıralamamız gerekiyor.
İlgili kişilerin dikkatine :)
#linq #orderby #group-by