2014-10-15 4 views
7

मेरे पास घटनाओं की एक सूची है, जिनमें से प्रत्येक में डेटाटाइम संपत्ति है। मुझे सालाना सूची में सूक्ष्मवादियों में विभाजित करने की जरूरत है। चाल यह है कि, मेरी घटनाओं की सूची डेटाबेस से खींची जाती है और परिवर्तन के अधीन होती है, इसलिए मैं केवल वर्षों के सेट को हार्डकोड नहीं कर सकता और घटनाओं को सही वर्ष में सॉर्ट नहीं कर सकता। क्या कोई तरीका है कि मैं घटनाओं की अपनी मुख्य सूची को उपन्यासकारों में विभाजित कर सकता हूं ताकि प्रत्येक उपन्यासकार के भीतर, प्रत्येक कार्यक्रम में एक ही वर्ष हो? तो मैं सभी 2010 की घटनाओं के एक उपन्यास के साथ खत्म हो जाऊंगा, सभी 2011 की घटनाओं का एक उपन्यास, और इसी तरह।सी # एक निश्चित संपत्ति के मूल्य के आधार पर sublists में विभाजन सूची?

मेरी सूची में इस तरह बनाई गई है: यदि आप उपरोक्त कोड का परिणाम के माध्यम से पुनरावृति करने में सक्षम होंगे तो देर

eventsList.GroupBy(x => x.Year) 

:

foreach (var ev in eventResults) 
    { 
     eventsList.Add(new Event() 
     { 
      Name = ev.Title, 
      Month = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(ev.StartDate.Month), 
      Day = ev.StartDate.Day, 
      Year = ev.StartDate.Year 
     }); 
    } 
+2

GroupBy है क्या आप देख रहे हैं: http://stackoverflow.com/questions/7325278/group-by-in -linq –

उत्तर

23

आप एक grouping by साल की तरह बनाने की जरूरत है

foreach (var eventsInYear in eventsList.GroupBy(x => x.Year)) 
{ 
    //eventsInYear.Key - year 
    //eventsInYear - collection of events in that year 
} 
4

ग्रुपबी का उपयोग करें:

var eventsByYear = eventsList.GroupBy(a => a.Year); 

इसके बाद आप हर साल कार्रवाई करने के लिए है कि संग्रह के माध्यम से पुनरावृति कर सकते हैं:

foreach (var yearEvents in eventsByYear) 
{ 
    // yearEvents contains all the events for one particular year 
    Console.WriteLine("Events for year: " + yearEvents.Key); 
    foreach (var e in yearEvents) 
    { 
     Console.WriteLine(e); 
    } 
} 
+1

बीटीडब्ल्यू घटना एक कीवर्ड है और आप इसे तुरंत उपयोग नहीं कर सकते हैं, @event – Vladimirs

+0

@Vladimirs: अच्छा पकड़ होना चाहिए। –

संबंधित मुद्दे