X

جدید در .NET 9.0 [23]: Operator Linq Aggregateby () و index ()

[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]

لینک منبع

Categories: اخبار
تیوبر: لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.