این مقاله را به اشتراک بگذارید
[ad_1]
علاوه بر موارد ارائه شده در آخرین پست CountBy()
هم هست AggregateBy()
وت Index()
به عنوان اپراتورهای جدید LINQ (پرس و جو یکپارچه زبان) در .NET 9.0.
دکتر هولگر شویشنبرگ مدیر فنی شبکه متخصصان www.it-vision.de است که با 53 متخصص مشهور از طریق مشاوره و آموزش و همچنین در توسعه نرم افزار از شرکت های متوسط و بزرگ و بزرگ پشتیبانی می کند. هولگر شویشنبرگ از طریق حضور وی در کنفرانس های متخصص ملی و بین المللی و همچنین بیش از 90 کتاب تخصصی و بیش از 1500 مقاله تخصصی ، یکی از بهترین متخصصان شناخته شده برای .NET و تکنیک های وب در آلمان است.
AggregateBy()
گروهی را با هدف تجمع مانند یک گروه ساده کرد. خلاصه کد زیر از اپراتور جدید استفاده می کند:
///
/// AggregateBy() vereinfacht eine Gruppierung mit dem Ziel der Aufsummierung.
/// Beispiel: Summierung der Punkte pro Team
///
public void LINQ_AggregateBy()
{
CUI.Demo(nameof(LINQ_AggregateBy) + ": Summierung der Punkte pro Team");
List 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> 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)));
}
این کد امتیازات تیم ها را خلاصه می کند.
(BILD: تصویر (هولگر شویشنبرگ))
Index()
ارائه می دهد برای IEnumerable
Tupel با شاخص در حال انجام (عدد صحیح ، 0 تا N) و مقدار برگشت ، که یک رشته در کد زیر است:
///
/// Index() liefert für ein IEnumerable ein Tupel mit dem Wert und dem laufenden Index (0 bis n) zurück. Beispiel: Wörter in einer Zeichenkette werden durchnummeriert.
///
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 words = sourceText.Split(new char[] { ' ', '.', ',', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
// --------------------------- ALT mit Select()
CUI.H2("\nAlt mit Select()");
IEnumerable 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 wordIndexNew = words.Index();
foreach ((int index, string wort) in wordIndexNew)
{
Console.WriteLine($"{index + 1} Wort: {wort}");
}
}
کد کلمات را در یک رشته شماره گذاری کرد.
(BILD: تصویر (هولگر شویشنبرگ))
(RME)
[ad_2]
لینک منبع