برنامه نویسی

کشف متدهای جدید LINQ در سی شارپ 9

سلام! اگر شما هم مانند من از علاقه مندان به C# هستید، احتمالا همیشه به دنبال جدیدترین و بهترین ویژگی های این زبان هستید. خب، سی شارپ 9 چند روش فوق العاده جدید LINQ (پرس و جوی یکپارچه زبان) دارد که مطمئناً زندگی کدنویسی شما را آسان تر و لذت بخش تر می کند. بیایید به این روش های جدید بپردازیم: شمارش با، AggregateBy، و شاخص.

CountBy: Grouping Made Simple

اول از همه، ما آن را داریم CountBy روش این افزودنی مفید به شما این امکان را می دهد که عناصر را با یک کلید مشخص گروه بندی کنید و سپس رخدادهای درون هر گروه را بشمارید. برای مواقعی که نیاز دارید به سرعت تعداد آیتم‌ها را در یک مجموعه تعیین کنید، عالی است.

تصور کنید فهرستی از افراد با نام کوچک خود دارید و می خواهید بدانید که چند نفر هم نام دارند. در اینجا نحوه انجام این کار با آن آورده شده است CountBy:

public record Person(string FirstName, string LastName);

List<Person> people = new()
{
    new("Steve", "Jobs"),
    new("Steve", "Carell"),
    new("Elon", "Musk")
};

foreach (var group in people.CountBy(p => p.FirstName))
{
    Console.WriteLine($"There are {group.Value} people with the name {group.Key}");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این کد خروجی خواهد داشت:

There are 2 people with the name Steve
There are 1 people with the name Elon
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خیلی تمیز، درسته؟ گروه بندی و شمردن را نسیم می کند!

AggregateBy: تجمیع سفارشی

بعد، بیایید در مورد صحبت کنیم AggregateBy روش این یکی از عملکرد CountBy با اجازه دادن به شما برای انجام تجمیع سفارشی بر روی عناصر گروه بندی شده، یک قدم بیشتر است. شما می توانید یک مقدار دانه و یک تابع تجمع برای ترکیب عناصر در هر گروه ارائه دهید.

برای مثال، فرض کنید فهرستی از افراد با ویژگی عددی اضافی دارید و می‌خواهید این اعداد را برای هر گروه جمع کنید:

public record Person(string FirstName, string LastName, int SomeNumber);

List<Person> people = new()
{
    new("Steve", "Jobs", 10),
    new("Steve", "Carell", 100),
    new("Elon", "Musk", 10)
};

var aggregated = people.AggregateBy(
    person => person.SomeNumber,
    0,
    (acc, person) => acc + person.SomeNumber
);

foreach (var group in aggregated)
{
    Console.WriteLine($"Sum of SomeNumber for key {group.Key} is {group.Value}");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خروجی خواهد داشت:

Sum of SomeNumber for key 10 is 20
Sum of SomeNumber for key 100 is 100
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با AggregateBy، می توانید به راحتی بدون عرق کردن، تجمعات پیچیده را انجام دهید.

فهرست: دسترسی به موارد با شاخص

آخرین اما نه کم اهمیت، ما باید Index روش این روش به شما این امکان را می دهد که هر آیتم را در یک مجموعه به همراه فهرست آن بازیابی کنید. زمانی که نیاز دارید موارد را بر اساس موقعیت آنها در مجموعه پردازش کنید بسیار مفید است.

در اینجا مثالی از نحوه استفاده از آن آورده شده است Index روش:

public record Person(string FirstName, string LastName);

List<Person> people = new()
{
    new("Steve", "Jobs"),
    new("Steve", "Carell"),
    new("Elon", "Musk")
};

foreach (var (index, person) in people.Index())
{
    Console.WriteLine($"Entry {index}: {person}");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این خروجی خواهد داشت:

Entry 0: Person { FirstName = Steve, LastName = Jobs }
Entry 1: Person { FirstName = Steve, LastName = Carell }
Entry 2: Person { FirstName = Elon, LastName = Musk }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را Index روش کار با موارد و موقعیت آنها در یک مجموعه را آسان می کند.

بسته بندی

متدهای جدید LINQ در سی شارپ 9-CountBy، AggregateBy، و Index-ابزارهای قدرتمندی هستند که وظایف رایج را ساده می کنند و انعطاف پذیری بیشتری را در نحوه پردازش مجموعه ها فراهم می کنند. چه در حال شمارش آیتم‌ها، انجام تجمیع سفارشی یا بازیابی آیتم‌ها با شاخص‌هایشان باشید، این روش‌ها تجربه LINQ را بهبود می‌بخشند و کد شما را واضح‌تر و مختصرتر می‌کنند.

بنابراین، ادامه دهید و این روش های جدید را در پروژه بعدی خود امتحان کنید. کد نویسی مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا