.NET 9.0'da yeni [22]: Operatör linq countby ()

Womanne

Member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması gerekiyorsa, operatörü gerçekleştirmek artık gerekli değildir. GroupBy() kullanmak için.






Dotnet Doctor-Holger Schwichtenberg




Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünüşleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi ile Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.








Aşağıdaki kod örneği en yaygın isimleri belirler CountBy():



private static List<Person> GetData()
{
#region ---------------- Demodaten erstellen
int count = 10000;
CUI.H3($"Generiere {count} Demodaten...");
Randomizer.Seed = new Random(42); // Fester Seed für gleichbleibende Testdaten!
var personFaker = new AutoFaker<Person>("de") // Fake-Daten mit https://github.com/nickdodd79/AutoBogus
.RuleFor(fake => fake.ID, fake => fake.Random.Int(0))
.RuleFor(fake => fake.Givenname, fake => fake.Name.FirstName())
.RuleFor(fake => fake.Surname, fake => fake.Name.LastName())
.RuleFor(fake => fake.Birthday, fake => fake.Date.Past(100).Date)
.RuleFor(fake => fake.Team, fake => fake.Random.ArrayElement(new string[] { "MSV", "RWE", "BVB" }))
.RuleFor(fake => fake.Punkte, fake => fake.Random.Number(0, 10));
List<Person> personSet = new();
for (int i = 0; i < count; i++)
{
var p = personFaker.Generate();
personSet.Add(p);
}
Console.WriteLine("Anzahl Personen: " + personSet.Count);
#endregion
return personSet;
}

/// <summary>
/// Ermitteln der 10 häufigsten Vornamen in einer Liste von Personen
/// </summary>
public void LINQ_CountBy()
{
CUI.Demo(nameof(LINQ_CountBy) + ": Ermitteln der 10 häufigsten Vornamen in einer Liste von Personen");
List<Person> personSet = GetData();

// --------------------------- ALT
CUI.H2("10 häufigste Vornamen im Datenbestand (alt mit GroupBy() + Select())");
// bisherige Implementierung mit GroupBy() + Select()
var nameGroupsOld = personSet
.GroupBy(info => info.Givenname) // Gruppieren nach Häufigkeit des GivenName
.Select(group => new
{
Key = group.Key,
Value = group.Count() // Zählen
});

var groups1top10 = nameGroupsOld.OrderByDescending(x => x.Value).Take(10);
// Ausgabe mit SpectreConsole
AnsiConsole.Write(new BarChart()
.Width(60)
.AddItems(groups1top10, (item) => new BarChartItem(
item.Key, item.Value, Color.Cyan1)));

// --------------------------- NEU
CUI.H2("n10 häufigste Vornamen im Datenbestand (neu mit CountBy())");
Dictionary<string, int> nameGroupsNew = personSet
.CountBy(x => x.Givenname); // Gruppieren nach Häufigkeit des GivenName

Console.WriteLine("10 häufigste Vornamen im Datenbestand:");
var groups2top10 = nameGroupsNew.OrderByDescending(x => x.Value).Take(10);

// Ausgabe mit SpectreConsole
AnsiConsole.Write(new BarChart()
.Width(60)
.AddItems(groups2top10, (item) => new BarChartItem(
item.Key, item.Value, Color.Cyan2)));
}



Sonucu CountBy() VE Dictionary<T, T>Bir önceki uygulama ile GroupBy() Anonim bir tür sağlar.








Örnek kodun baskısı, Bar Edition için ek kitaplığın spectrowconsole'ini kullanır.


(Resim: Ekran görüntüsü (Holger Schwichtenberg))





(RME)




Ne yazık ki, bu bağlantı artık geçerli değil.

Boşa harcanan eşyalara olan bağlantılar, 7 günlük daha büyükse veya çok sık çağrılmışsa gerçekleşmez.


Bu makaleyi okumak için bir Haberler+ paketine ihtiyacınız var. Şimdi yükümlülük olmadan bir hafta deneyin – yükümlülük olmadan!
 

Alkoz

Global Mod
Global Mod
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Herkese iyi sabahlar

Yazıya kattığın perspektif alışılmışın çok dışında, bu farkı net bir şekilde hissettim

Pratikte genelde şöyle oluyor, aşağıdaki noktalar da işine yarayabilir

  • CountBy() operatörü, gruplama ve sayma işlemlerini tek adımda birleştirerek daha temiz ve sezgisel bir sorgu yazma imkanı sunar
Bir cümle ekledim, belki aradığın tam da buydu
 

GezginRuhlar

Global Mod
Global Mod
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Selam herkese iyi sohbetler

Konuyla ilgili bakış açımı değiştiren nadir içeriklerden biri oldu bu yazı @Womanne

Bu arada şunu da söyleyeyim, aşağıdaki noktalar da işine yarayabilir

  • NET 9.0'da yeni olan CountBy() LINQ operatörü , bir koleksiyonun elemanlarını bir anahtara göre gruplandırır ve her grubun kaç kez tekrarlandığını sayar
Biraz da pratik tarafına değineyim istedim, belki sen de böyle denersin

Alkoz' Alıntı:
Herkese iyi sabahlar Yazıya kattığın perspektif alışılmışın çok dışında, bu farkı net bir şekilde hissettim Pratikte genelde şöyle oluyor, aşağıdaki noktalar da işine yarayabilir CountBy() operatörü, gruplama ve sayma
Oldukça iddialı konuşmuşsun @Alkoz, ama destekleyici veri göremedim
 

Aylin

New member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Konuyla ilgili bakış açımı değiştiren nadir içeriklerden biri oldu bu yazı @Womanne

Bir iki noktaya daha değinmek isterim, aşağıdaki noktalar da işine yarayabilir

  • CountBy() operatörü, özellikle veri işleme görevlerinde performansı artırmak ve kodu daha özlü hale getirmek için tasarlanmıştır
Minik bir öneri daha ekliyorum, umarım hoşuna gider

GezginRuhlar' Alıntı:
Selam herkese iyi sohbetler Konuyla ilgili bakış açımı değiştiren nadir içeriklerden biri oldu bu yazı @Womanne Bu arada şunu da söyleyeyim, aşağıdaki noktalar da işine yarayabilir NET 9.0'da yeni olan CountBy() LINQ
Bilimsel açıdan desteklenen çok yön var @GezginRuhlar
 

Defne

New member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Merhaba düşünenlere

İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne

Nazik bir ekleme olsun diye yazdım, sert değil korkma :)

Alkoz' Alıntı:
Herkese iyi sabahlar Yazıya kattığın perspektif alışılmışın çok dışında, bu farkı net bir şekilde hissettim Pratikte genelde şöyle oluyor, aşağıdaki noktalar da işine yarayabilir CountBy() operatörü, gruplama ve sayma
Birkaç örnek daha olsa tadından yenmezdi @Alkoz
 

Erdemitlee

Global Mod
Global Mod
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Merhaba bilgili dostlar

Konuyu anlatırken verdiğin örnekler sayesinde soyut kavramlar bile somut hale gelmiş

Biraz da espri katayım dedim ama olmadı galiba :)

Defne' Alıntı:
Merhaba düşünenlere İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Nazik bir ekleme olsun diye yazdım, sert değil korkma :) Birkaç örnek daha olsa tadından yenmezdi
Burada biraz abartı sezdim, her zaman böyle sonuçlar çıkmıyor @Defne
 

Aksu

Global Mod
Global Mod
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Anlatımındaki katman katman derinlik çok etkileyici, her okumada yeni bir şey çıkıyor @Womanne

Uzun uzadıya yazmadım, sadece bir ipucu bıraktım

Defne' Alıntı:
Merhaba düşünenlere İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Nazik bir ekleme olsun diye yazdım, sert değil korkma :) Birkaç örnek daha olsa tadından yenmezdi
Kısmen katıldığım yerler var ama genel olarak benim fikrim farklı
 

Berk

New member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Merhaba üretim tutkunları

Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne

Minik bir öneri daha ekliyorum, umarım hoşuna gider

Erdemitlee' Alıntı:
Merhaba bilgili dostlar Konuyu anlatırken verdiğin örnekler sayesinde soyut kavramlar bile somut hale gelmiş Biraz da espri katayım dedim ama olmadı galiba :) Burada biraz abartı sezdim, her zaman böyle sonuçlar
Bu bakış açını anlıyorum @Erdemitlee, fakat bazı yerlerde fazla kesin konuştuğunu düşünüyorum
 

Efe

New member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Merhaba buradakilere

Yalın ama etkili anlatım tarzın metne çok şey katmış @Womanne

İşine yarar diye şöyle bir not daha sıkıştırdım, umarım denk gelir

Aylin' Alıntı:
Konuyla ilgili bakış açımı değiştiren nadir içeriklerden biri oldu bu yazı @Womanne Bir iki noktaya daha değinmek isterim, aşağıdaki noktalar da işine yarayabilir CountBy() operatörü, özellikle veri işleme görevlerinde
Bazı yerlerde seni destekleyen veriler olsa da geneli temsil etmiyor @Aylin
 

Murat

New member
.NET 9.0'da Microsoft, temel sınıf kütüphanesinde yeni operatöre sahip CountBy() Entegre Dil Sorgusu (LINQ) için eklendi. Frekansa göre gruplandırılması
Merhaba teknoloji severler

İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne

Son dakikada aklıma geldi, hemen ekledim

Aksu' Alıntı:
Anlatımındaki katman katman derinlik çok etkileyici, her okumada yeni bir şey çıkıyor @Womanne Uzun uzadıya yazmadım, sadece bir ipucu bıraktım Kısmen katıldığım yerler var ama genel olarak benim fikrim farklı
Sert bir yorum olacak ama bazı noktaları kabul edemem @Aksu
 
Üst