C# अकादमी · पाठ

एग्रीगेट और ToList

गिनती करें, जोड़ें और डेटा को सूची में बदलें

पाठ 4, कुल 4 में से13 चरण

एग्रीगेट और ToList, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

तत्वों की गिनती

Count किसी अनुक्रम में मौजूद तत्वों की संख्या लौटाता है। किसी प्रेडिकेट के साथ यह केवल मेल खाने वाले तत्वों की गिनती करता है।

यह अनुक्रम पर क्रम से चलने के लिए बाध्य करता है, इसलिए कुल संख्या निकालने के लिए पूरे अनुक्रम को पढ़ा जाता है—यह एक समेकन क्रिया है।

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4, 5 };
Console.WriteLine(nums.Count());
Console.WriteLine(nums.Count(n => n > 2));

मानों का योग

Sum संख्यात्मक मानों को जोड़ता है। संख्यात्मक अनुक्रम पर यह तत्वों का योग करता है; चयनकर्ता के साथ यह हर तत्व से निकाले गए मानों का योग करता है।

यह स्रोत या चयनकर्ता के परिणाम के समान ही संख्यात्मक प्रकार लौटाता है।

using System;
using System.Linq;
using System.Collections.Generic;

record Order(int Qty, decimal Price);
var orders = new List<Order> { new(2, 5m), new(3, 4m) };
decimal total = orders.Sum(o => o.Qty * o.Price);
Console.WriteLine(total);

मानों का औसत

Average अंकगणितीय माध्य निकालता है। Sum की तरह यह वैकल्पिक चयनकर्ता स्वीकार करता है।

परिणाम फ़्लोटिंग-पॉइंट प्रकार का होता है, जैसे double, भले ही स्रोत में पूर्णांक हों। इससे भाग देने पर सटीकता कम नहीं होती।

using System;
using System.Linq;

int[] scores = { 80, 90, 100 };
double avg = scores.Average();
Console.WriteLine(avg);

न्यूनतम और अधिकतम

Min और Max सबसे छोटे और सबसे बड़े मान लौटाते हैं। चयनकर्ता के साथ वे निकाली गई कुंजी का समेकन करते हैं।

आधुनिक .NET में MaxBy और MinBy केवल कुंजी का मान नहीं, बल्कि चरम कुंजी वाला पूरा तत्व लौटाते हैं।

using System;
using System.Linq;
using System.Collections.Generic;

record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var oldest = ps.MaxBy(p => p.Age);
Console.WriteLine(oldest!.Name);

खाली अनुक्रम की समस्याएँ

खाली अनुक्रम पर मान-प्रकारों के लिए Average, Min और Max InvalidOperationException उत्पन्न करते हैं। Sum शून्य लौटाता है और Count भी शून्य लौटाता है।

Any() से पहले जाँच करें या संभवतः खाली आँकड़ों का औसत निकालने से पहले DefaultIfEmpty का उपयोग करें।

using System;
using System.Linq;

int[] empty = Array.Empty<int>();
double avg = empty.DefaultIfEmpty(0).Average();
Console.WriteLine(avg);

कस्टम समेटने के लिए Aggregate

Aggregate किसी संचायक फ़ंक्शन की सहायता से पूरे अनुक्रम को एक मान में समेटता है। यह Sum और अन्य क्रियाओं के पीछे मौजूद सामान्य रूप है।

आप एक आरंभिक मान दे सकते हैं और हर तत्व को चलते हुए परिणाम में मिला सकते हैं—यह गुणनफल, संयोजन या कस्टम तर्क के लिए उपयोगी है।

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4 };
int product = nums.Aggregate(1, (acc, n) => acc * n);
Console.WriteLine(product);

ToList से परिणामों को संग्रह में बदलना

ToList क्वेरी को तुरंत चलाता है और परिणामों को एक List<T> में कॉपी करता है। इससे जानबूझकर स्थगित निष्पादन समाप्त हो जाता है।

इसका उपयोग स्थिर प्रति लेने, महँगे प्रवाह को दोबारा चलने से रोकने या अनुक्रमण और Count प्रॉपर्टी जैसी सूची सुविधाएँ पाने के लिए करें।

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4 };
var evens = nums.Where(n => n % 2 == 0).ToList();
evens.Add(6);
Console.WriteLine(string.Join(", ", evens));

ToArray और ToDictionary

संबंधित परिणाम-संग्रह विधियों में निश्चित आकार के ऐरे के लिए ToArray और कुंजी-आधारित खोज के लिए ToDictionary शामिल हैं।

ToDictionary एक कुंजी चयनकर्ता और वैकल्पिक मान चयनकर्ता लेता है। यदि दो तत्वों से समान कुंजी बनती है, तो यह त्रुटि उत्पन्न करता है।

using System;
using System.Linq;
using System.Collections.Generic;

record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var byName = ps.ToDictionary(p => p.Name, p => p.Age);
Console.WriteLine(byName["Ana"]);

परिणामों को संग्रह में क्यों बदलें

स्थगित क्वेरी हर बार क्रम से पढ़े जाने पर फिर से चलती हैं। यदि कोई प्रवाह महँगा है या बदलते हुए स्रोत से पढ़ता है, तो यह दोहराव त्रुटियों और धीमेपन का कारण बनता है।

एक बार ToList कॉल करने से परिणाम सुरक्षित हो जाते हैं, इसलिए बाद में उन्हें पढ़ना तेज़ और एकसमान रहता है।

using System;
using System.Linq;

int runs = 0;
int[] nums = { 1, 2, 3 };
var list = nums.Select(n => { runs++; return n; }).ToList();
foreach (var _ in list) { }
foreach (var _ in list) { }
Console.WriteLine(runs);

First, Single और Any

तत्व-संबंधी ऑपरेटर भी निष्पादन के लिए बाध्य करते हैं। First पहला मेल खाने वाला तत्व लौटाता है और कोई न मिलने पर त्रुटि उत्पन्न करता है, FirstOrDefault इसके बजाय डिफ़ॉल्ट मान लौटाता है, जबकि Single ठीक एक तत्व की अपेक्षा करता है।

Any यह बताता है कि अनुक्रम में कोई मेल खाने वाला तत्व है या नहीं, और इसके लिए सभी तत्वों की गिनती नहीं करनी पड़ती।

using System;
using System.Linq;

int[] nums = { 3, 8, 5, 12 };
int firstBig = nums.First(n => n > 7);
bool hasOdd = nums.Any(n => n % 2 == 1);
Console.WriteLine($"{firstBig} {hasOdd}");

पूरा प्रवाह

वास्तविक क्वेरी में फ़िल्टर करना, प्रक्षेपण, क्रमबद्धता और समेकन शृंखलाबद्ध होते हैं और अक्सर अंत में किसी परिणाम-संग्रह विधि का उपयोग किया जाता है।

इसे ऊपर से नीचे पढ़िए: पहले फ़िल्टर करें, फिर रूप दें, फिर क्रमबद्ध करें और अंत में एकत्र करें। अंतिम ToList पूरे प्रवाह को एक बार चलाता है।

using System;
using System.Linq;
using System.Collections.Generic;

record Sale(string City, int Amt);
var sales = new List<Sale> { new("NY", 5), new("LA", 3), new("NY", 9) };
var top = sales.Where(s => s.Amt > 4)
               .OrderByDescending(s => s.Amt)
               .Select(s => s.City)
               .ToList();
Console.WriteLine(string.Join(", ", top));

त्वरित जाँच

स्थगित निष्पादन और परिणामों को संग्रह में बदलने के बारे में विचार कीजिए।

पुनरावलोकन

समेकन क्रियाएँ किसी अनुक्रम को एक मान में बदलती हैं: Count, Sum, Average, Min/Max, MinBy/MaxBy और सामान्य Aggregate। वे निष्पादन के लिए बाध्य करती हैं और खाली स्रोतों पर त्रुटि उत्पन्न कर सकती हैं।

ToList, ToArray और ToDictionary परिणामों को संग्रह में बदलते हैं। इससे स्थगन समाप्त हो जाता है और महँगा प्रवाह एक बार चलता है। इससे LINQ के फ़िल्टर करने और प्रक्षेपित करने वाले औज़ारों का यह भाग पूरा होता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C# सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
93
पाठ
346

अक्सर पूछे जाने वाले प्रश्न

क्या “एग्रीगेट और ToList” पाठ निःशुल्क है?

हाँ—“एग्रीगेट और ToList” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“एग्रीगेट और ToList” में मैं क्या सीखूँगा?

गिनती करें, जोड़ें और डेटा को सूची में बदलें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“एग्रीगेट और ToList” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. WHERE और फ़िल्टरिंग
  2. SELECT और प्रक्षेपण
  3. OrderBy और समूहीकरण
  4. एग्रीगेट और ToList
← C# अकादमी पर वापस जाएँ