अज्ञात प्रकार के सेट पर Sum () करना: क्या यह संभव है?

यदि मैं एक क्वेरी से एक अनाम प्रकार ( नया चुनें) का चयन करता हूं:

 var smsPerGroup = from g in db.Groups
                   select new
                   {
                       GroupName = g.Name,
                       ReceivedSMS = g.Members.SelectMany(p => p.ReceivedSMS).Count()
                   };

यह खुशी करता है कि मैं इस पर राशि() नहीं कर सकता:

int max = smsPerGroup.Max(g => g.ReceivedSMS); //ERROR!

The error thrown is: There was an error parsing the query.

इसके लिए सबसे सही समाधान क्या है?

मैं इस प्रश्न पर केवल एक बार उपयोग करने के लिए कक्षा नहीं बनाना चाहता हूं।

क्या यह "बहुत गुमनाम नहीं है" प्रकार संभव है? यह है: इसकी गुणों के प्रकार को परिभाषित करने के लिए, लेकिन कक्षा के प्रकार के रूप में नहीं

ऐसा कुछ: (जो वाक्य रचनात्मक रूप से गलत है)

    ...
   select new
   {
       string GroupName = g.Name,
       int ReceivedSMS = g.Members.SelectMany(p => p.ReceivedSMS).Count()
   };




Edit: the error in detail is the following

There was an error parsing the query. [ Token line number = 6,Token line offset = 5,Token in error = SELECT ]

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlServerCe.SqlCeException: There was an error parsing the query. [ Token line number = 6,Token line offset = 5,Token in error = SELECT ]

Source Error: 


Line 159:                                      };
Line 160:
Line 161:                    int max = smsPerGroup.Max(g => g.ReceivedSMS);
0
मैंने विस्तार से त्रुटि जोड़ा। यह ईएफ है।
जोड़ा लेखक sports, स्रोत
यदि यह ईएफ है (या जो भी प्रदाता है), उपयुक्त टैग जोड़ें। सभी LINQ बराबर नहीं है। पूर्ण संदेश भी शामिल करना सुनिश्चित करें - इसमें अपवादों के प्रकार शामिल होना चाहिए।
जोड़ा लेखक user2864740, स्रोत
@MarcinJuraszek यह एक अपवाद के लिए संदेश है जिसे SQL सर्वर क्वेरी से उत्पन्न किया जा सकता है .. लेकिन ओपी के लिए ऐसा कहना अच्छा होगा और पूर्ण विवरण शामिल करें।
जोड़ा लेखक user2864740, स्रोत
मुझे आपके प्रश्नों में कुछ भी गलत नहीं दिख रहा है। क्या आप अपनी त्रुटि का थोड़ा और वर्णन कर सकते हैं? क्या यह रनटाइम त्रुटि का संकलन है? क्या कोई अपवाद फेंक दिया गया है?
जोड़ा लेखक MarcinJuraszek, स्रोत

1 उत्तर

कॉल करने से पहले पूछताछ करने के लिए एक सरल समाधान होगा। Tolist() .um ():

var test = (from g in db.Groups
            select new
            {
                GroupName = g.Name,
                ReceivedSMS = g.Members.SelectMany(p => p.ReceivedSMS).Count()
            }).ToList();

var sum = test.Sum(t => t.ReceivedSMS);
0
जोड़ा
यह काम किया! डर था कि यह क्वेरी में देरी होगी लेकिन यह पूरी तरह से अच्छा था
जोड़ा लेखक sports, स्रोत