.NET 9.0'da yeni [23]: Operatör linq agregatby () ve dizin ()

Womanne

Member
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi.






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ümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.








AggregateBy() Bir grubu toplama amacıyla basitleştirdi. Summerica. Aşağıdaki kod yeni operatörü kullanır:



/// <summary>
/// AggregateBy() vereinfacht eine Gruppierung mit dem Ziel der Aufsummierung.
/// Beispiel: Summierung der Punkte pro Team
/// </summary>
public void LINQ_AggregateBy()
{
CUI.Demo(nameof(LINQ_AggregateBy) + ": Summierung der Punkte pro Team");
List<Person> personSet = GetData();

// --------------------------- ALT
CUI.H2("Alt mit GroupBy() + Select()");

// Punkte aggregieren ALT
var teamPointsOld = personSet
.GroupBy(p => p.Team)
.Select(group => new { Team = group.Key, PunkteSumme = group.Sum(p => p.Punkte) });

AnsiConsole.Write(new BarChart()
.Width(60)
.AddItems(teamPointsOld, (item) => new BarChartItem(
item.Team, item.PunkteSumme, Color.Cyan2)));

// --------------------------- NEU
CUI.H2("nNeu mit AggregateBy()");

// Punkte aggregieren NEU
IEnumerable<KeyValuePair<string, int>> teamPointsNew = personSet.AggregateBy(
p => p.Team,
seed: 0,
(PunkteSumme, p) => PunkteSumme + p.Punkte);

AnsiConsole.Write(new BarChart()
.Width(60)
.AddItems(teamPointsNew, (item) => new BarChartItem(
item.Key, item.Value, Color.Cyan1)));
}





Sonuçlar Linq



Kod, ekiplerin noktalarını özetler.


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



Index() Bir için teslimat IEnumerable<T> Aşağıdaki kodda bir dize olan devam eden dizin (bütün, 0 andan) ve dönüş değeri olan bir tupel:



/// <summary>
/// Index() liefert für ein IEnumerable<T> ein Tupel mit dem Wert und dem laufenden Index (0 bis n) zurück. Beispiel: Wörter in einer Zeichenkette werden durchnummeriert.
/// </summary>
public void LINQ_Index()
{
CUI.Demo(nameof(LINQ_Index) + ": Wörter in einer Zeichenkette werden durchnummeriert");

string sourceText = """
Das ist ein Testbeispiel, das einige Mal das Wort das enthält.
""";
IEnumerable<string> words = sourceText.Split(new char[] { ' ', '.', ',', 'r', 'n' }, StringSplitOptions.RemoveEmptyEntries);

// --------------------------- ALT mit Select()
CUI.H2("nAlt mit Select()");
IEnumerable<(int index, string wort)> wordIndexOld = words.Select((wort, index) => (index, wort));
foreach ((int index, string wort) in wordIndexOld)
{
Console.WriteLine($"{index + 1} Wort: {wort}");
}

// --------------------------- NEU mit Index() liefert Tupel mit Index und Wert
CUI.H2("nNeu mit Index()");
IEnumerable<(int Index, string Item)> wordIndexNew = words.Index();
foreach ((int index, string wort) in wordIndexNew)
{
Console.WriteLine($"{index + 1} Wort: {wort}");
}
}





Sonuçlar Linq



Kod, bir dize içindeki kelimeleri numaralandırdı.


(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!
 

Erdemitlee

Global Mod
Global Mod
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne

Ek bir bilgi olarak, aşağıdaki noktalar da işine yarayabilir

  • AggregateBy operatörü, .NET 9.0'da LINQ ile şu şekilde kullanılır
Şöyle bir cümle daha yazayım dedim, umarım hoşuna gider
 

Murat

New member
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Selam aramıza yeni katılanlar

Anlatımındaki katman katman derinlik çok etkileyici, her okumada yeni bir şey çıkıyor @Womanne

Ek bir bilgi olarak, aşağıdaki noktalar da işine yarayabilir

  • Bu özellikler hakkında daha fazla bilgi için aşağıdaki kaynaklara başvurulabilir
Araya komiklik katmak gibi olmasın ama denemesi kolay

Erdemitlee' Alıntı:
Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ek bir bilgi olarak, aşağıdaki noktalar da işine yarayabilir AggregateBy operatörü, .NET 9.0'da LINQ ile şu şekilde kullanılır Şöyle
Senin yorumun kadar uzmanların yaklaşımı da değişken @Erdemitlee
 

Berk

New member
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Giriş bölümü bile merak uyandırıyor, sonuna kadar ilgiyle takip ettim @Womanne

Buna ilave olarak, aşağıdaki noktalar da işine yarayabilir

  • Daha fazla bilgi için .NET 9.0'daki LINQ yeniliklerine ilişkin kaynaklara başvurulabilir
Bunu özellikle ekledim çünkü gözden kaçabilir

Erdemitlee' Alıntı:
Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ek bir bilgi olarak, aşağıdaki noktalar da işine yarayabilir AggregateBy operatörü, .NET 9.0'da LINQ ile şu şekilde kullanılır Şöyle
Senin anlattığın kısımda ufak eksikler var gibi @Erdemitlee, ama önemli değil
 

GezginRuhlar

Global Mod
Global Mod
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Selam maceraperestler

Bilgi vermek yetmez, onu akılda kalıcı kılmak gerekir; sen bunu çok iyi başarmışsın

Şöyle bir detay daha var, aşağıdaki noktalar da işine yarayabilir

  • AggregateBy ve Index operatörleri, .NET 9.0'da LINQ (Tümleşik Dil Sorgusu) ile sunulan yeni özelliklerdendir
Berk' Alıntı:
Giriş bölümü bile merak uyandırıyor, sonuna kadar ilgiyle takip ettim @Womanne Buna ilave olarak, aşağıdaki noktalar da işine yarayabilir Daha fazla bilgi için .NET 9.0'daki LINQ yeniliklerine ilişkin kaynaklara
Oldukça iddialı konuşmuşsun @Berk, ama destekleyici veri göremedim
 

Aksu

Global Mod
Global Mod
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Herkese iyi sabahlar

Dilindeki zenginlik ve netlik birleşince ortaya çok etkili bir içerik çıkmış @Womanne

Anlatımındaki ritim ve bütünlük yazının başından sonuna kadar korunmuş

Murat' Alıntı:
Selam aramıza yeni katılanlar Anlatımındaki katman katman derinlik çok etkileyici, her okumada yeni bir şey çıkıyor @Womanne Ek bir bilgi olarak, aşağıdaki noktalar da işine yarayabilir Bu özellikler hakkında daha fazla
Biraz sert söyleyeceğim ama bazı çıkarımların bana mantıklı gelmedi @Murat
 

Alkoz

Global Mod
Global Mod
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Merhaba paylaşanlara

Okurken o kadar akıcı ilerliyordu ki zamanın nasıl geçtiğini anlamadım @Womanne

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

GezginRuhlar' Alıntı:
Selam maceraperestler Bilgi vermek yetmez, onu akılda kalıcı kılmak gerekir; sen bunu çok iyi başarmışsın Şöyle bir detay daha var, aşağıdaki noktalar da işine yarayabilir AggregateBy ve Index operatörleri, .NET 9.0'da
Ben buna katılmıyorum @GezginRuhlar, özellikle son nokta bana ters geldi
 

Defne

New member
Son gönderide sunulana ek olarak CountBy() Ayrıca var AggregateBy() VE Index() .NET 9.0'daki yeni operatörler LINQ (entegre dil sorgusu) gibi
Merhaba buradakilere

Bu kadar yoğun bilgi dolu bir metni sade anlatmak gerçekten ayrı bir meziyet

Tam geçiyordum aslında ama eklemesem içimde kalacaktı

Yargıç koltuğuna oturmadan şöyle diyebilirim

Aksu' Alıntı:
Herkese iyi sabahlar Dilindeki zenginlik ve netlik birleşince ortaya çok etkili bir içerik çıkmış @Womanne Anlatımındaki ritim ve bütünlük yazının başından sonuna kadar korunmuş
Haksız değilsin @Aksu ama keşke birkaç veri daha ekleseydin, daha sağlam olurdu

Alkoz' Alıntı:
Merhaba paylaşanlara Okurken o kadar akıcı ilerliyordu ki zamanın nasıl geçtiğini anlamadım @Womanne Uzun uzadıya yazmadım, sadece bir ipucu bıraktım Ben buna katılmıyorum
Biraz daha veri ekleyebilirsin @Alkoz, o zaman daha ikna edici olurdu

GezginRuhlar' Alıntı:
Selam maceraperestler Bilgi vermek yetmez, onu akılda kalıcı kılmak gerekir; sen bunu çok iyi başarmışsın Şöyle bir detay daha var, aşağıdaki noktalar da işine yarayabilir
Açıkçası söylediğin şey her durum için geçerli değil, özellikle bazı örneklerde tam tersi oluyor @GezginRuhlar
 
Üst