TGViewer
DotNet | دات نت DotNet | دات نت @dotnetcode · 1.21K subscribers
Post #2967 678

Forwarded from Software Philosophy

برسی متدهای جدید LINQ در دات نت ۹

دات‌نت ۹، که قرار است در نوامبر ۲۰۲۴ منتشر شود، پیش‌نمایش جدیدی ارائه کرده است که چندین متد LINQ جدید شامل CountBy، AggregateBy و Index را معرفی می‌کند:

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

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

متد Index: این متد یک مجموعه ایندکس شده ایجاد می‌کند، به طوری که هر عنصر با ایندکس خود در مجموعه اصلی همراه است.

این متدهای جدید LINQ در دات‌نت ۹ امکاناتی را برای بهینه‌سازی کد و بهبود عملکرد فراهم کرده‌اند و ابزارهای بیشتری در اختیار توسعه‌دهندگان قرار می‌دهند.

در ادامه، مثال‌هایی از هر یک از متدهای جدید LINQ همراه با خروجی آن‌ها ارائه شده است:

۱. مثال متد CountBy

فرض کنید لیستی از افراد داریم که شامل نام و سن آن‌هاست و می‌خواهیم تعداد افراد را بر اساس سن آن‌ها شمارش کنیم.
var people = new List<Person>
{
new Person { Name = "Ali", Age = 25 },
new Person { Name = "Sara", Age = 30 },
new Person { Name = "Reza", Age = 25 },
new Person { Name = "Maryam", Age = 30 },
new Person { Name = "Nima", Age = 20 }
};

var ageCounts = people.CountBy(p => p.Age);
foreach (var ageCount in ageCounts)
{
Console.WriteLine($"Age: {ageCount.Key}, Count: {ageCount.Value}");
}

خروجی:
Age: 25, Count: 2
Age: 30, Count: 2
Age: 20, Count: 1


۲. مثال متد AggregateBy

در این مثال، ما قصد داریم مجموع سن‌ها را بر اساس گروه‌های سنی (به عنوان مثال زیر ۳۰ و بالای ۳۰) تجمیع کنیم.
var people = new List<Person>
{
new Person { Name = "Ali", Age = 25 },
new Person { Name = "Sara", Age = 30 },
new Person { Name = "Reza", Age = 25 },
new Person { Name = "Maryam", Age = 30 },
new Person { Name = "Nima", Age = 20 }
};

var ageSums = people.AggregateBy(
p => p.Age < 30 ? "Under 30" : "30 and Above",
(key, group) => group.Sum(p => p.Age)
);

foreach (var ageSum in ageSums)
{
Console.WriteLine($"Group: {ageSum.Key}, Sum of Ages: {ageSum.Value}");
}

خروجی:
Group: Under 30, Sum of Ages: 70
Group: 30 and Above, Sum of Ages: 60


۳. مثال متد Index

در این مثال، لیستی از نام‌ها داریم و می‌خواهیم هر نام را همراه با ایندکس آن در لیست نمایش دهیم.
var names = new List<string> { "Ali", "Sara", "Reza", "Maryam", "Nima" };

var indexedNames = names.Index();
foreach (var item in indexedNames)
{
Console.WriteLine($"Index: {item.Index}, Name: {item.Value}");
}

خروجی:
Index: 0, Name: Ali
Index: 1, Name: Sara
Index: 2, Name: Reza
Index: 3, Name: Maryam
Index: 4, Name: Nima


‼️برای دیدن نمونه مثال و مطالعه بیشتر به دو لینک زیر مراجعه کنید:

🔗لینک اول

🔗لینک دوم

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#هوتن_همتی (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

_______
timdeschryver.dev New LINQ methods in C# 13: Index, CountBy, AggregateBy Taking a look (including examples) at the new LINQ methods that will be introduced in C# 13, as part of the .NET 9 release.
  • 👍 4
More from @dotnetcode
  1. Sep 16, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  2. Jul 10, 2026#مهندس_فکر_کن قسمت:4️⃣ 🎯مصاحبه‌کننده: ءCache Stampede چیست؟ فرض کن یک کلید در Cache داری:…
  3. Jun 12, 20261. Indexes منابع پیشنهادی این چالش که برای من اینها جذاب بوده و هست. A. Designing Data-Int…
  4. Jun 9, 2026آینده هوش مصنوعی و مهندسی کامپیوتر هوش مصنوعی مهندسی را نابود نمی‌کند، اما در سکوت در حال…
  5. Jun 4, 2026تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز Union Types در C# 15! بالاخره یکی از جذاب‌ت…
  6. Feb 8, 2026👩‍💻 پستگرس رو ۲.۵ برابر سریع‌تر کن! تصور کن مغز متفکر دیتابیست (Parser) رو بدی دست هوش م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →