X

جدید در .NET 9.0 [22]: Countby Linq-Operator ()

[ad_1]

در .NET 9.0 ، مایکروسافت دارای اپراتور جدید در کتابخانه کلاس پایه است CountBy() برای پرس و جو یکپارچه زبان (LINQ) اضافه شده است. اگر قرار باشد با توجه به فرکانس گروه بندی شود ، دیگر نیازی به انجام اپراتور نیست GroupBy() برای استفاده



دکتر هولگر شویشنبرگ مدیر فنی شبکه متخصصان www.it-vision.de است که با 53 متخصص مشهور از طریق مشاوره و آموزش و همچنین در توسعه نرم افزار از شرکت های متوسط ​​و بزرگ و بزرگ پشتیبانی می کند. هولگر شویشنبرگ از طریق حضور وی در کنفرانس های متخصص ملی و بین المللی و همچنین بیش از 90 کتاب تخصصی و بیش از 1500 مقاله تخصصی ، یکی از بهترین متخصصان شناخته شده برای .NET و تکنیک های وب در آلمان است.

مثال کد زیر رایج ترین نام های اول را تعیین می کند CountBy():


private static List 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("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 personSet = new();
 for (int i = 0; i 
/// Ermitteln der 10 häufigsten Vornamen in einer Liste von Personen
/// 
public void LINQ_CountBy()
{
 CUI.Demo(nameof(LINQ_CountBy) + ": Ermitteln der 10 häufigsten Vornamen in einer Liste von Personen");
 List 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 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)));
}


نتیجه CountBy() است ، Dictionary، در حالی که اجرای قبلی با GroupBy() یک نوع ناشناس را ارائه می دهد.



نسخه کد مثال از Spectreconsole کتابخانه اضافی برای نسخه نوار استفاده می کند.

(BILD: تصویر (هولگر شویشنبرگ))


(RME)

[ad_2]

لینک منبع

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