तो, मेरे पास यह LINQ क्वेरी है:

var Result = from u in Users 
             group u by new {u.AccountType, u.Id,u.CreationDate} into usergroup
             select new {id=usergroup.Key.Id,CreationDate=usergroup.Key.CreationDate,AccountType=usergroup.Key.AccountType};

जो निम्न डेटा सेट देता है:

enter image description here

मैं इस तरह व्यक्तिगत समूह की गिनती प्राप्त करने में सक्षम हूं:

var myresult=Result.GroupBy(n=>n.AccountType).Select(n=>new {AccountType=n.Key,TotalCount=n.Count()});

जो मुझे देता है:

enter image description here

अब मान लीजिए, मैं January-December से Months की एक कस्टम तिथि सीमा परिभाषित करता हूं, मैं प्रत्येक महीने के आधार पर मुझे AccountType की गिनती देने के लिए पहले डेटा-सेट पर एक समूह कैसे कर सकता हूं CreationDate कॉलम को मेरी कस्टम तिथि सीमा में शामिल करें?

-1
Rahul Sharma 21 जिंदा 2020, 12:51
क्या वह post: LINQ & Grouping data by a date range मददगार है?
 – 
Mong Zhu
21 जिंदा 2020, 12:55
या शायद यह एक: तिथि सीमा के अनुसार समूह , प्रत्येक समूह LINQ में गिनें और क्रमित करें?
 – 
Mong Zhu
21 जिंदा 2020, 12:56
आप निर्माण तिथि से एक महीना प्राप्त कर सकते हैं और इसका उपयोग समूह और फ़िल्टर करने के लिए कर सकते हैं
 – 
Pavel Anikhouski
21 जिंदा 2020, 13:01
"अब मान लीजिए, मैं जनवरी-दिसंबर से महीनों की एक कस्टम दिनांक सीमा परिभाषित करता हूं" क्या आप इस श्रेणी के लिए समूहीकरण से पहले फ़िल्टर करना चाहते हैं?
 – 
Mong Zhu
21 जिंदा 2020, 13:27
मैं दिनांक सीमा पर फ़िल्टर करने का इरादा नहीं रखता लेकिन वास्तविक फ़िल्टर खाता प्रकार (जो डोनट ग्राफ़ पर दिखाया गया है) पर लागू किया जाएगा। मुझे उस महीने में प्रत्येक खाता प्रकार की गिनती के साथ केवल 1-12 महीने के डेटासेट की आवश्यकता है।
 – 
Rahul Sharma
21 जिंदा 2020, 13:29

4 जवाब

सबसे बढ़िया उत्तर

मैं यह समझने की कोशिश कर रहा हूं कि आप अपना परिणाम किस प्रकार का चाहते हैं। यदि आप महीनों की एक सूची चाहते हैं, जिनमें से प्रत्येक में प्रति खाता प्रकार के खातों का मिलान होगा, तो आप कुछ इस तरह की कोशिश कर सकते हैं:

var myResult2 = result.GroupBy(o => o.CreationDate.Month).Select(monthGroup => new
    {
        Month = System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(monthGroup.Key),
        Accounts = monthGroup.GroupBy(o => o.AccountType).ToDictionary(accountGroup => accountGroup.Key, accountGroup => accountGroup.Count())
    });
1
Philip Atz 21 जिंदा 2020, 13:17
धन्यवाद लेकिन यह केवल 13 की गिनती तक जोड़ रहा है जबकि मेरे डेटा सेट में 40 तत्व हैं।
 – 
Rahul Sharma
21 जिंदा 2020, 13:23
आपका क्या मतलब है जब आप कहते हैं कि यह "केवल 13 की गिनती में जोड़ रहा है"? आपके डेटासेट में 7 महीने होते हैं और उनमें से प्रत्येक की अनेक गणनाएँ होती हैं (प्रत्येक खाता प्रकार के लिए एक)। उन सभी का कुल 40 होना चाहिए...
 – 
Philip Atz
21 जिंदा 2020, 13:49
माफ करना मेरा बुरा। हाँ आप सही हैं। मुझे इसकी कोशिश करने दीजिए।
 – 
Rahul Sharma
21 जिंदा 2020, 13:59
यदि यह आपका स्वीकृत उत्तर है, तो "कस्टम" तिथि सीमा कोई भूमिका नहीं निभाती है। मुझे यहां इस पर कोई विचार नहीं दिख रहा है
 – 
Mong Zhu
21 जिंदा 2020, 14:58

इसे आज़माएं: मुझे लगता है कि यह आपका काम करेगा

.GroupBy(g => new { g.CreationDate.Date.Month, g.AccountType })
    .Select(t => new { t.Key.AccountType, t.Key.Month, Count = t.Count() });
0
Florim Maxhuni 21 जिंदा 2020, 13:08
मैं हर महीने सभी प्रकार के खातों के लिए समूह कैसे बना सकता हूं? क्या मेरे पास एक डेटासेट हो सकता है जिसमें प्रत्येक खाता प्रकार की गिनती के साथ केवल 1-12 महीने हों?
 – 
Rahul Sharma
21 जिंदा 2020, 13:29
यह आपके डेटासेट आधार को महीने और खाता प्रकार के आधार पर समूहित करता है। यदि आपको अलग-अलग वर्षों की भी आवश्यकता है तो आपको वर्ष के अनुसार भी समूह बनाना होगा।
 – 
Florim Maxhuni
21 जिंदा 2020, 14:13
"क्या मेरे पास एक डेटासेट हो सकता है जिसमें केवल 1-12 महीने हैं" और कोई महीने नहीं हैं ...
 – 
Mong Zhu
21 जिंदा 2020, 14:59

यदि क्रिएशनडेट एक स्ट्रिंग है:

var group = result.GroupBy(g => new { DateTime.Parse(g.CreationDate).Date.Month, g.AccountType })
                  .Select(user => new { user.Key.AccountType, user.Key.Month, Count = user.Count() });

foreach (var g in group)
{
    Console.WriteLine($"Users with Month[{g.Month}] : {g.Count}, AccType: {g.AccountType};");
}
0
wald3 21 जिंदा 2020, 13:22

मेरे पास नीचे दिए गए कोड का प्रयास है:

var data = Users.GroupBy(x => new {x.column1 , x.column2 ,...})
.Select(y=> new className() { column1 = y.Key.column1 , column2 = y.Key.column2}).ToList<className>();
0
AminGolmahalle 21 जिंदा 2020, 13:33