Home > DeveloperSection > Forums > Linq Count based on Boolean
Brad Pitt
Brad Pitt

Total Post:61

Points:429
Posted on    June-11-2013 8:18 AM

 VB.Net VB.Net 
Ratings:


 1 Reply(s)
 1260  View(s)
Rate this:
Hi Developers, 

I'm trying to get a linq query running which I can't get right.

I have a list of a custom class called Occurrences, this class has two properties Code as String and Negative as Boolean. I am trying to get the net total of Code (group by Code) so this would be a count of Code where Negative = False (All positive), subtract a count of Code where Negative = True (All negative). There is no quantity in the Occurrences class, each occurrence counts as 1 negative or positive.

I tried to do this in 3 separate queries which did not work, ideally I would like to do this in 1 query.

Please let me know if you need a better explanation or if I am unclear.

Edit: Sample input/output

Input:

Code       Negative
-------------------
123        True
123        True
123        False
456        True
456        True
456        True
789        False
789        False
Output:

Code       Count
----------------
123        -1
456        -3
789        +2

Any help on above is really appreciated.


AVADHESH PATEL

Total Post:604

Points:4228
Posted on    June-12-2013 7:35 AM

Hi,

You can try as following

from item in data group item by item.Code into g

select new { Code = g.Key, Count = g.Sum(x => x.Negative ? -1 : 1) }

Don't want to miss updates? Please click the below button!

Follow MindStick