Ajit 

It's not falling over on the Sum - by trimming the query down to its basics I 
can identify that the problem is in the fragment

group new { a.Cn_ref, a.Cn_desc, b.Ct_quan}

but I now have the workaround which I posted

group new { a.Cn_ref, a.Cn_desc, quan = (b != null ) ? b.Ct_quan : 0 }

Paul

-----Original Message-----
From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Ajit Abraham
Sent: 07 January 2016 18:59
To: profoxt...@leafe.com
Subject: Re: [NF] SQL SELECT to LINQ

Hello Paul,

Maybe this means that for some master records, there are no child records.
And your model does not accept null int.

Try this one on the Sum
.Sum(p=>(int?)p.Ct_quan) ?? 0}

Regards

Ajit Abraham



On 07/01/2016 18:45, Paul Newton wrote:
> Hi Ajit
>
> The following works
>
> var quantities = (from a in Cnames
> join b in Ctrans on a.Cn_ref equals b.Ct_ref into g select new { 
> cn_ref = a.Cn_ref, cn_desc = a.Cn_desc, quantity = 
> g.ToList().Sum(p=>p.Ct_quan) }) ;
>
> quantities.Dump();
>
> but it fails with an InvalidOperationException (The null value cannot 
> be assigned to a member with type System.Int32 which is a non-nullable 
> value type) if there is a row in Cnames without any corresponding rows 
> in Ctrans
>
> Any ideas?  Thanks
>
> Paul
> -----Original Message-----
> From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of 
> Ajit Abraham
> Sent: 07 January 2016 14:28
> To: profoxt...@leafe.com
> Subject: Re: [NF] SQL SELECT to LINQ
>
> Hello Paul,
>
> Can you check if the following too works for you?
>
> from a in cn_ref
> join b in cn_desc on a.cn_ref equals b.ct_ref into g select new { 
> cn_ref = a.cn_ref, cn_desc = a.cn_desc, quantity = 
> g.ToList().Sum(p=>p.ct_quan) }
>
> I got a cast error which I removed by putting the ?? 0 on the Sum.
>
> If it works, then which you feel is faster?
>
> Regards
>
> Ajit Abaham
>
>
>    
>
>
>
> On 07/01/2016 13:26, Paul Newton wrote:
>> Many, many thanks Ajit that worked once I changed on a.cn_ref = 
>> b.ct_ref to on a.cn_ref equals b.ct_ref
>>
>> Paul
>>
>> -----Original Message-----
>> From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of 
>> Ajit Abraham
>> Sent: 07 January 2016 09:38
>> To: profoxt...@leafe.com
>> Subject: Re: [NF] SQL SELECT to LINQ
>>
>> Hello Paul,
>>
>> One possible solution from stackoverflow bit.ly/1TGzfLp
>>
>>
>> from a in cn_ref
>> join b in cn_desc
>> on a.cn_ref = b.ct_ref
>> group new {a.cn_ref, a.cn_desc, b.ct_quan} by new {a.cn_ref, 
>> a.cn_desc } into gc select new { cn_ref = gc.Key.cn_ref, cn_desc = 
>> gc.Key.cn_Desc, quantity = gc.ToList().Sum(p=>p.ct_quan) }
>>
>> To sort you can wrap the above in brackets and put a
>> .Orderby(x=>x.cn_ref)
>>
>> I tested it on Linqpad. It works - but the SQL output is verbose compared to 
>> your SQL statement.
>>
>> Ajit Abraham
>>
>>
>> On 06/01/2016 18:09, Paul Newton wrote:
>>> Hi all
>>>
>>> I am just starting out with LINQ and am struggling a bit so I 
>>> wondered if any kind could help me out with converting the following 
>>> to LINQ
>>>
>>> select cn_ref, cn_desc, sum(ct_quan) as Quantity from cname join 
>>> ctran on cn_ref=ct_ref group by cn_ref,cn_desc order by cn_ref
>>>
>>> Any offers of help would be much appreciated
>>>
>>> Paul Newton
>>>
[excessive quoting removed by server]

_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/9a8106afb0ef9b44b69045c4448935a2012334a...@nlbawexmbx3.infor.com
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to