Soran
How To : Karmaşık Bir Linq Sorgusu Hk.

Genel Tartışma
-
var countries = Formula1.GetChampions() .GroupBy(r => r.Country) .Select(g => new { Group = g, Count = g.Count() }) .OrderByDescending(g => g.Count) .ThenBy(g => g.Group.Key) .Where(g => g.Count >= 2) .Select(g => new { Country = g.Group.Key, Count = g.Count });
Arkadaslar bu linq sorgusunda anlamadigim noktalar var
var countries = Formula1.GetChampions()
.GroupBy(r => r.Country)
.Select(g => new { Group = g, Count = g.Count() }) // Burda ki Group ve Count'a Set işlemleri Group = g, Count = g.Count() ? Group nedir burda ki ?
.OrderByDescending(g => g.Count)
.ThenBy(g => g.Group.Key) // ThenBy ne yapar
.Where(g => g.Count >= 2)
.Select(g => new
{
Country = g.Group.Key, // g. Group.Key burda ki Key nedir ? bu ifade tam olarak ne yapar
Count = g.Count // Count'u Count'a set etmiş neden :/
});Kıssa dan hisse birisi adım adım anlatabilir mi linq sorgusunu ?
Özellikle Group.Key burası ne yapar ?
- Düzenleyen yuKKo Ganioglu 4 Kasım 2016 Cuma 21:25
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 8 Kasım 2016 Salı 12:57
Tüm Yanıtlar
-
Bu kafa karistirici ornekleri de nerelerden buluyorsun :) Gereksiz yere uzatmis yaptigi isi.
".Select(g => new { Group = g, Count = g.Count() }) // Burda ki Group ve Count'a Set işlemleri Group = g, Count = g.Count() ? Group nedir burda ki ?"
Group orada kendi verdigin bir property ismi. Group demeyi uygun gormus.
.OrderByDescending(g => g.Count)
.ThenBy(g => g.Group.Key) // ThenBy ne yaparOnce gruptakilerin sayisina gore buyukten kucuge dogru siraliyor. Eger birden fazla siralama gerekiyorsa, o zaman digerlerini ThenBy ya da ThenByDescending ile yapiyorsun.
.Where(g => g.Count >= 2)
.Select(g => new
{
Country = g.Group.Key, // g. Group.Key burda ki Key nedir ? bu ifade tam olarak ne yaparBurada Key, gruplamada kullandigin key yani bastaki Country.
Count = g.Count // Count'u Count'a set etmiş neden :/Soldaki Count property'e verdigi ad (Group'ta yaptigi gibi), Sayi, HowMany ... gibi bir isim de kullanabilirdi. Sagdaki g.Count ise o gruptaki sayi.
Buldugun ornek pek de iyi degil. Ornegin OrderBy'i nerede yaptiginin onemi var. Normalde burada OrderBy islemini sona saklarsin. Sonucta sadece Country ve sayilarini aliyor ama arada gereksiz Group = g gibi atamalar var. Aynisinin bir baska yazim sekli :
var countries = Formula1.GetChampions() .GroupBy(r => r.Country) .Where(g => g.Count >= 2) .Select(g => new { Country = g.Key, Adet = g.Count }) .OrderByDescending(g => g.Adet) .ThenBy(g => g.Country);
-
Bu kafa karistirici ornekleri de nerelerden buluyorsun :) Gereksiz yere uzatmis yaptigi isi.
".Select(g => new { Group = g, Count = g.Count() }) // Burda ki Group ve Count'a Set işlemleri Group = g, Count = g.Count() ? Group nedir burda ki ?"
Group orada kendi verdigin bir property ismi. Group demeyi uygun gormus.
.OrderByDescending(g => g.Count)
.ThenBy(g => g.Group.Key) // ThenBy ne yaparOnce gruptakilerin sayisina gore buyukten kucuge dogru siraliyor. Eger birden fazla siralama gerekiyorsa, o zaman digerlerini ThenBy ya da ThenByDescending ile yapiyorsun.
.Where(g => g.Count >= 2)
.Select(g => new
{
Country = g.Group.Key, // g. Group.Key burda ki Key nedir ? bu ifade tam olarak ne yaparBurada Key, gruplamada kullandigin key yani bastaki Country.
Count = g.Count // Count'u Count'a set etmiş neden :/Soldaki Count property'e verdigi ad (Group'ta yaptigi gibi), Sayi, HowMany ... gibi bir isim de kullanabilirdi. Sagdaki g.Count ise o gruptaki sayi.
Buldugun ornek pek de iyi degil. Ornegin OrderBy'i nerede yaptiginin onemi var. Normalde burada OrderBy islemini sona saklarsin. Sonucta sadece Country ve sayilarini aliyor ama arada gereksiz Group = g gibi atamalar var. Aynisinin bir baska yazim sekli :
var countries = Formula1.GetChampions() .GroupBy(r => r.Country) .Where(g => g.Count >= 2) .Select(g => new { Country = g.Key, Adet = g.Count }) .OrderByDescending(g => g.Adet) .ThenBy(g => g.Country);