Actually, I suppose that really needs to be "NullSafeSum<T>(...)" so that you can control the casting type externally, but you take my point :)
Cheers, Steve Bohlen [email protected] http://blog.unhandled-exceptions.com http://twitter.com/sbohlen On Mon, Mar 31, 2014 at 9:56 AM, Stephen Bohlen <[email protected]> wrote: > I don't think its technically 'broken'. As you can see from the comments > in the JIRA issue, the final design decision was to mimic the behavior of > sim. LINQ statements in other ORMs in the .NET space for the sake of > consistency and so as not to violate "the principle of least-surprise". > > If that behavior isn't what you seek for your use-case, then you are > certainly free to apply the work-arounds discussed. If you don't like the > "ugly" syntax this produces in your code, then I recommend you create an > extension method of your own ( perhaps "IEnumerable.NullSafeSum(...)" ?) > and invoke that instead. > > Cheers, > > Steve Bohlen > [email protected] > http://blog.unhandled-exceptions.com > http://twitter.com/sbohlen > > > On Mon, Mar 31, 2014 at 1:03 AM, Mouhong Lin <[email protected]> wrote: > >> I already know that workaround before I created this post. >> I mean why this is treat as "by design" behavior and not plan to fix it. >> That's why I posted it here instead of the nhusers groupd. >> >> >> On Monday, March 31, 2014 4:14:16 AM UTC+8, Ricardo Peres wrote: >>> >>> var total = query.Sum(x => (double?) x.Income); >>> >>> Replace double for single, int, long, etc. >>> >>> By the way, the proper place to ask questions is the nhusers mailing >>> list, not this one. >>> >>> RP >>> >>> On Sunday, March 30, 2014 4:42:24 PM UTC+1, Mouhong Lin wrote: >>>> >>>> Hi guys, >>>> >>>> I get an exception saying "Value cannot be null" when i execute this >>>> query (NH 3.3.3): >>>> >>>> var total = query.Sum(x => x.Income); >>>> >>>> The exception happens when the query returns no result. >>>> I found there's already a Jira issue about this: >>>> https://nhibernate.jira.com/browse/NH-3113 >>>> >>>> But why won't fix? It's really not usable if this query throws >>>> exception. In every application that need to do reporting will encounter >>>> this. >>>> And this violate the semantic of the sum and linq to objects, right? >>>> If this should throw exception, why query.Count() don't throws? >>>> (I understand the technical reason of this, just saying why the >>>> semantic of these are not consistent) >>>> >>>> If L2S or EF behaves the same, I think it's their bug. Not because it's >>>> a good thing. >>>> Workaounds like this "var sum = myQuery.Sum(x => (int?)x.Prop) ?? 0" make >>>> my code really ugly. >>>> >>>> Ideas? >>>> >>>> >>>> >>>> ------------------------------ >>>> Mouhong >>>> >>>> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nhibernate-development" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
