2013-06-10 2 views
1

나는 제대로 얻을 수없는 실행중인 linq 쿼리를 얻으려고합니다.Linq는 부울을 기준으로 계산합니다.

나는 Occurrences라는 사용자 지정 클래스 목록을 가지고 있는데,이 클래스는 부울로 코드로 String과 Negative의 두 가지 속성을가집니다. 코드의 총 합계 (Code by group)를 얻으려는 것이므로 Negative = False (All positive), Negative = True (All negative)의 코드 수를 뺍니다. Occurrences 클래스에는 수량이 없으며 각 발생은 1 개의 음수 또는 양수로 계산됩니다.

나는 3 개의 별도의 쿼리에서이 작업을 시도했는데 이상적으로는 1 개의 쿼리에서이 작업을 수행하려고합니다.

더 자세한 설명이 필요하거나 명확하지 않은 경우 알려 주시기 바랍니다.

편집 : 샘플 입력/출력

입력 :

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

출력 :

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

당신이 당신의 시도를 게시하는 경우 그것은 도움이 될 수 있습니다 - 당신은 원래 무엇을하려고 했습니까? –

+0

입출력 예제? – Neolisk

답변

0
Dim netTotal = From o In Occurrences 
       Group By o.Code 
       Into Sum(If(o.Negative, -1, 1)) 
+0

답변에 몇 가지 설명을 추가하십시오. –

+0

이것은 나를 위해 일한 가장 간단한 대답이었다. 태그를 너무주의 해 주셔서 감사합니다 (VB.NET). – Ross

1

당신은 같을 것이다 LINQ로 설명의 직접 번역을 시도 할 수 있습니다 :

그러면 Code을 음수가 아닌 값과 음수 값의 차이로 계산 된 해당 개수로 매핑하는 Dictionary<string,int>이 생성됩니다.

2
from item in data 
group item by item.Code into g 
select new { Code = g.Key, Count = g.Sum(x => x.Negative ? -1 : 1) }