c# - Linq selecting from GroupBy -


i want select every group custom class , every item custom class,

i done this:

_notificationsmanager     .getusernotifications(_repositorynotifications, _membershipprovider)     .groupby(x => x.category)     .select(g => new notificationsgroupdata {           name = g.key,           notifications = g.take(3).select(s => new notificationdata  {                                            category = g.key,                                            text = s.text,                                            time = datetime.now.subtract(s.time)                                          })      }) 

here notificationsgroupdata:

public class notificationsgroupdata {     public string name { get; set; }     public ienumerable<notificationdata> notifications { get; set; } } 

and notificationdata:

public class notificationdata {     public virtual timespan time { get; set; }     public virtual string category { get; set; }     public virtual string text { get; set; } } 

but when i'm trying create loop on i'm getting error: method or operation not implemented.

on line:

@foreach (var group in model.notifications) 

how can fix it?

uodate: updated code this:

_notificationsmanager.getusernotifications(_repositorynotifications, _membershipprovider)                                              .groupby(x => x.category)                                              .select(g => new                                                  {                                                      name = g.key,                                                      notifications =                                                               g.orderby(o => o.time)                                                                .take(3)                                                                .select(s => new                                                                    {                                                                        category = g.key,                                                                        s.text,                                                                        s.time                                                                    })                                                  }).asenumerable().select(g => new notificationsgroupdata                                                      {                                                          name = g.name,                                                          notifications = g.notifications                                                                           .select(s => new notificationdata                                                                               {                                                                                   category = g.name,                                                                                   text = s.text,                                                                                   time = - s.time                                                                               })                                                      }) 

and here error:

the method or operation not implemented.  description: unhandled exception occurred during execution of current web request. please review stack trace more information error , originated in code.   exception details: system.notimplementedexception: method or operation not implemented.  source error: @foreach (var group in model.notifications)  stack trace:    [notimplementedexception: method or operation not implemented.] nhibernate.linq.groupby.nonaggregatinggroupbyrewriter.flattensubquery(subqueryexpression subqueryexpression, querymodel querymodel) +608    nhibernate.linq.groupby.nonaggregatinggroupbyrewriter.rewrite(querymodel querymodel) +598    nhibernate.linq.visitors.querymodelvisitor.generatehqlquery(querymodel querymodel, visitorparameters parameters, boolean root) +126    nhibernate.linq.nhlinqexpression.translate(isessionfactoryimplementor sessionfactory) +208    nhibernate.hql.ast.antlr.astquerytranslatorfactory.createquerytranslators(string queryidentifier, iqueryexpression queryexpression, string collectionrole, boolean shallow, idictionary`2 filters, isessionfactoryimplementor factory) +51    nhibernate.engine.query.hqlexpressionqueryplan.createtranslators(string expressionstr, iqueryexpression queryexpression, string collectionrole, boolean shallow, idictionary`2 enabledfilters, isessionfactoryimplementor factory) +100    nhibernate.engine.query.hqlexpressionqueryplan..ctor(string expressionstr, iqueryexpression queryexpression, string collectionrole, boolean shallow, idictionary`2 enabledfilters, isessionfactoryimplementor factory) +74    nhibernate.engine.query.hqlexpressionqueryplan..ctor(string expressionstr, iqueryexpression queryexpression, boolean shallow, idictionary`2 enabledfilters, isessionfactoryimplementor factory) +53  nhibernate.engine.query.queryplancache.gethqlqueryplan(iqueryexpression queryexpression, boolean shallow, idictionary`2 enabledfilters) +320   nhibernate.impl.abstractsessionimpl.gethqlqueryplan(iqueryexpression queryexpression, boolean shallow) +188    nhibernate.impl.abstractsessionimpl.createquery(iqueryexpression queryexpression) +164    nhibernate.linq.defaultqueryprovider.preparequery(expression expression, iquery& query, nhlinqexpression& nhquery) +152    nhibernate.linq.defaultqueryprovider.execute(expression expression) +70    nhibernate.linq.defaultqueryprovider.execute(expression expression) +59    remotion.linq.queryablebase`1.getenumerator() +128  system.linq.whereselectenumerableiterator`2.movenext() +61    asp._page_views_layout_notifications_cshtml.execute() in d:\dev\projects\adde\adde\views\layout\notifications.cshtml:21    system.web.webpages.webpagebase.executepagehierarchy() +197    system.web.mvc.webviewpage.executepagehierarchy() +103    system.web.webpages.webpagebase.executepagehierarchy(webpagecontext pagecontext, textwriter writer, webpagerenderingbase startpage) +88    system.web.mvc.razorview.renderview(viewcontext viewcontext, textwriter writer, object instance) +235    system.web.mvc.buildmanagercompiledview.render(viewcontext viewcontext, textwriter writer) +107    system.web.mvc.viewresultbase.executeresult(controllercontext context) +291    system.web.mvc.controlleractioninvoker.invokeactionresult(controllercontext controllercontext, actionresult actionresult) +13    system.web.mvc.<>c__displayclass1a.<invokeactionresultwithfilters>b__17() +23    system.web.mvc.controlleractioninvoker.invokeactionresultfilter(iresultfilter filter, resultexecutingcontext precontext, func`1 continuation) +245   system.web.mvc.<>c__displayclass1c.<invokeactionresultwithfilters>b__19() +22    system.web.mvc.controlleractioninvoker.invokeactionresultwithfilters(controllercontext controllercontext, ilist`1 filters, actionresult actionresult) +176    system.web.mvc.async.<>c__displayclass2a.<begininvokeaction>b__20() +75    system.web.mvc.async.<>c__displayclass25.<begininvokeaction>b__22(iasyncresult asyncresult) +99    system.web.mvc.async.wrappedasyncresult`1.end() +50    system.web.mvc.async.asynccontrolleractioninvoker.endinvokeaction(iasyncresult asyncresult) +27    system.web.mvc.<>c__displayclass1d.<beginexecutecore>b__18(iasyncresult asyncresult) +14    system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.controller.endexecutecore(iasyncresult asyncresult) +39 system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.controller.endexecute(iasyncresult asyncresult) +29    system.web.mvc.controller.system.web.mvc.async.iasynccontroller.endexecute(iasyncresult asyncresult) +10    system.web.mvc.<>c__displayclass8.<beginprocessrequest>b__3(iasyncresult asyncresult) +25    system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.mvchandler.endprocessrequest(iasyncresult asyncresult) +31    system.web.mvc.mvchandler.system.web.ihttpasynchandler.endprocessrequest(iasyncresult result) +9    system.web.mvc.<>c__displayclassa.<endprocessrequest>b__9() +22    system.web.mvc.<>c__displayclass4.<wrap>b__3() +10    system.web.mvc.serverexecutehttphandlerwrapper.wrap(func`1 func) +27   system.web.mvc.serverexecutehttphandlerwrapper.wrap(action action) +64 system.web.mvc.serverexecutehttphandlerasyncwrapper.endprocessrequest(iasyncresult result) +71    system.web.httpserverutility.executeinternal(ihttphandler handler, textwriter writer, boolean preserveform, boolean setpreviouspage, virtualpath path, virtualpath filepath, string physpath, exception error, string querystringoverride) +1464  [httpexception (0x80004005): error executing child request handler 'system.web.mvc.httphandlerutil+serverexecutehttphandlerasyncwrapper'.] system.web.httpserverutility.executeinternal(ihttphandler handler, textwriter writer, boolean preserveform, boolean setpreviouspage, virtualpath path, virtualpath filepath, string physpath, exception error, string querystringoverride) +3033503    system.web.httpserverutility.execute(ihttphandler handler, textwriter writer, boolean preserveform, boolean setpreviouspage) +76    system.web.httpserverutility.execute(ihttphandler handler, textwriter writer, boolean preserveform) +28    system.web.httpserverutilitywrapper.execute(ihttphandler handler, textwriter writer, boolean preserveform) +19    system.web.mvc.html.childactionextensions.actionhelper(htmlhelper htmlhelper, string actionname, string controllername, routevaluedictionary routevalues, textwriter textwriter) +463    system.web.mvc.html.childactionextensions.renderaction(htmlhelper htmlhelper, string actionname, string controllername) +35    asp._page_views_shared__layout_cshtml.execute() in d:\dev\projects\adde\adde\views\shared\_layout.cshtml:33    system.web.webpages.webpagebase.executepagehierarchy() +197    system.web.mvc.webviewpage.executepagehierarchy() +103    system.web.webpages.webpagebase.executepagehierarchy(webpagecontext pagecontext, textwriter writer, webpagerenderingbase startpage) +88    system.web.webpages.<>c__displayclass7.<renderpagecore>b__6(textwriter writer) +233    system.web.webpages.helperresult.writeto(textwriter writer) +10    system.web.webpages.webpagebase.write(helperresult result) +71    system.web.webpages.webpagebase.rendersurrounding(string partialviewname, action`1 body) +64    system.web.webpages.webpagebase.popcontext() +246    system.web.webpages.webpagebase.executepagehierarchy(webpagecontext pagecontext, textwriter writer, webpagerenderingbase startpage) +95    system.web.mvc.razorview.renderview(viewcontext viewcontext, textwriter writer, object instance) +235    system.web.mvc.buildmanagercompiledview.render(viewcontext viewcontext, textwriter writer) +107    system.web.mvc.viewresultbase.executeresult(controllercontext context) +291    system.web.mvc.controlleractioninvoker.invokeactionresult(controllercontext controllercontext, actionresult actionresult) +13    system.web.mvc.<>c__displayclass1a.<invokeactionresultwithfilters>b__17() +23    system.web.mvc.controlleractioninvoker.invokeactionresultfilter(iresultfilter filter, resultexecutingcontext precontext, func`1 continuation) +245   system.web.mvc.<>c__displayclass1c.<invokeactionresultwithfilters>b__19() +22    system.web.mvc.controlleractioninvoker.invokeactionresultwithfilters(controllercontext controllercontext, ilist`1 filters, actionresult actionresult) +176    system.web.mvc.async.<>c__displayclass2a.<begininvokeaction>b__20() +75    system.web.mvc.async.<>c__displayclass25.<begininvokeaction>b__22(iasyncresult asyncresult) +99    system.web.mvc.async.wrappedasyncresult`1.end() +50    system.web.mvc.async.asynccontrolleractioninvoker.endinvokeaction(iasyncresult asyncresult) +27    system.web.mvc.<>c__displayclass1d.<beginexecutecore>b__18(iasyncresult asyncresult) +14    system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.controller.endexecutecore(iasyncresult asyncresult) +39 system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.controller.endexecute(iasyncresult asyncresult) +29    system.web.mvc.controller.system.web.mvc.async.iasynccontroller.endexecute(iasyncresult asyncresult) +10    system.web.mvc.<>c__displayclass8.<beginprocessrequest>b__3(iasyncresult asyncresult) +25    system.web.mvc.async.<>c__displayclass4.<makevoiddelegate>b__3(iasyncresult ar) +23    system.web.mvc.async.wrappedasyncresult`1.end() +55    system.web.mvc.mvchandler.endprocessrequest(iasyncresult asyncresult) +31    system.web.mvc.mvchandler.system.web.ihttpasynchandler.endprocessrequest(iasyncresult result) +9    system.web.callhandlerexecutionstep.system.web.httpapplication.iexecutionstep.execute() +9629708    system.web.httpapplication.executestep(iexecutionstep step, boolean& completedsynchronously) +155 

i suspect problem may in datetime.now.subtract(s.time) part, possibly combined use of notificationsgroupdata.

i suggest change query fetch data need without processing much, , perform more complex work locally using asenumerable. like:

// use single common idea of "now", don't re-evaluate each time var = datetime.now; var query = _notificationsmanager     .getusernotifications(_repositorynotifications, _membershipprovider)     .groupby(x => x.category)     .select(g => new {       name = g.key,       notifications = g.take(3)                        .select(s => new {                            text = s.text,                            time = s.time                        })     })     .asenumerable() // force local evaluation final step     .select(g => new notificationsgroupdata {       name = g.name,       notifications = g.notifications                        .select(s => new notificationdata {                            category = g.name,                            text = s.text,                            time = - s.time                        })     }); 

edit: okay, that's still giving problems, try doing everything post-grouping in-process:

var = datetime.now; var query = _notificationsmanager     .getusernotifications(_repositorynotifications, _membershipprovider)     .groupby(x => x.category)     .asenumerable() // force local evaluation final step     .select(g => new notificationsgroupdata {       name = g.key,       notifications = g.take(3)                        .select(s => new notificationdata {                            category = g.key,                            text = s.text,                            time = - s.time                        })     }); 

note far idea - it'll pull properties database, not ones want. (and not first 3 - although "first" depends on ordering too, hasn't been specified anywhere can see.) 1 of situations need fall sql, sound nhibernate doing more you...


Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -