orderby ve group Önceliği

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 :)