2011-11-11 18 views

उत्तर

12

कुछ इस

Enumerable.Range(1,12) 
    .Select(o => new DateTime(DateTime.Today.Year, o, 1)) 
    .GroupBy(o => (o.Month - 1)/3) 
+0

अच्छा, बहुत खुश है कि आप इसके लिए समाधान बनाने के लिए पूर्णांक जादू का उपयोग कर सकते हैं! – Jackstine

-1

हाँ, यह एसक्यूएल GroupBy कार्य करने के लिए LINQ के साथ प्राप्त किया जा सकता है अगर आप को परिभाषित qouters कहीं भी आपके डेटाबेस में या आप कुछ कोड लिख सकते हैं जो इस क्रिया को संभाल लेंगे यह सब इस आधार पर निर्भर करता है कि इस मूल्यांकन के लिए आपके लिए कौन सा डेटा उपलब्ध है।

3

की तरह आप विधि और GroupBy चयन की एक अधिभार का उपयोग कर भागों में एक मनमाना सूची विभाजित कर सकते हैं। आपके मामले में, सूची में महीने संभालने सही क्रम में हैं, निम्न कार्य करना चाहिए:

var groups = yourList 
    .Select((item, index) => new { item, index }) 
    .GroupBy(indexedItem=>indexedItem.index/3); 
+0

अच्छा उदाहरण लेकिन क्या होगा यदि उसके महीने कालक्रम क्रम में नहीं हैं –

+0

@COLDTOLD: तो liho1eye या आपका उत्तर बेहतर काम करेगा: डी हो सकता है – saus

5

यहाँ एक बुनियादी उदाहरण इस प्रदर्शन है:

var dates = new[] 
        { 
         new DateTime(2011, 12, 25), 
         new DateTime(2011, 11, 25), 
         new DateTime(2011, 5, 4), 
         new DateTime(2011, 1, 3), 
         new DateTime(2011, 8, 9), 
         new DateTime(2011, 2, 14), 
         new DateTime(2011, 7, 4), 
         new DateTime(2011, 11, 11) 
        }; 

var groupedByQuarter = from date in dates 
         group date by (date.Month - 1)/3 
         into groupedDates 
         orderby groupedDates.Key 
         select groupedDates; 


foreach(var quarter in groupedByQuarter) 
{ 
    Console.WriteLine("Q: {0}, Dates: {1}", quarter.Key, string.Join(", ", quarter)); 
} 

द्वारा आदेश बस मदद करने के लिए है तिमाहियों को तार्किक रूप से आदेश दिया जाना चाहिए। आप समूह विवरण के बाद पूरे खंड को हटा सकते हैं।

के उत्पादन के साथ:

Q: 0, Dates: 1/3/2011 12:00:00 AM, 2/14/2011 12:00:00 AM 
Q: 1, Dates: 5/4/2011 12:00:00 AM 
Q: 2, Dates: 8/9/2011 12:00:00 AM, 7/4/2011 12:00:00 AM 
Q: 3, Dates: 12/25/2011 12:00:00 AM, 11/25/2011 12:00:00 AM, 11/11/2011 12:00:00 AM 

जाहिर है आप जोड़ने या शायद उन्हें एक इसी enum में अनुवाद द्वारा तिमाही संख्या सही करने के लिए की आवश्यकता होगी।

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