2012-06-26 3 views
0

를 얻을 :Linq는 쿼리 나는 다음과 같은 결과를 표시하는 LINQ 쿼리를 구축 할 필요가 당월 플러스 이전 달

나는이 시나리오를 기반으로 결과를 얻을 필요가
Data: 

Sales Month 
---------------------- 
10  January 
20  February 
30  March 
40  April 
50  May 
60  June 
70  July 
80  August 
90  September 
100  October 
110  November 
120  December 

: 개월 X를 = 이 쿼리를 작성하는 방법을

Sales Month 
-------------------- 
10  January 
30  February (30 = February 20 + January 10) 
60  March (60 = March 30 + February 30) 
100  April (100 = April 40 + March 60) 
......... 

어떤 도움 : 발생합니다 월 X + 전월 ?

고맙습니다.

당신이 LINQ에서 그것을 원하기 때문에
+0

당신은 개체에 대한 linq2sql 또는 linq 쿼리에 대해 이야기하고 있습니까? –

+0

안녕 Shoaib : 객체에 대한 linq 쿼리 –

+0

크게,'[''시퀀스'.Skip (1)'']'로 시퀀스를'Zip'하십시오. 실제로 사용하는 유형을 알지 못하면 코드는 제외하고 더 자세한 정보를 제공 할 수 없습니다. – AakashM

답변

0

...

void Main() 
{ 
    List<SaleCount> sales = new List<SaleCount>() { 
     new SaleCount() { Sales = 10, Month = 1 }, 
     new SaleCount() { Sales = 20, Month = 2 }, 
     new SaleCount() { Sales = 30, Month = 3 }, 
     new SaleCount() { Sales = 40, Month = 4 }, 
     ... 
    }; 

    var query = sales.Select ((s, i) => new 
    { 
     CurrentMonth = s.Month, 
     CurrentAndPreviousSales = s.Sales + sales.Take(i).Sum(sa => sa.Sales) 
    }); 
} 

public class SaleCount 
{ 
    public int Sales { get; set; } 
    public int Month { get; set; } 
} 

...하지만 내 의견으로는,이 경우는 어디에 LINQ 그냥 쓰는만큼 명확하지 않을 일부 공상 함께 올라오고 LINQ 쿼리가 생성 할 코드를 만듭니다. 이것은 또한 확장되지 않습니다. 예를 들어, 여러 해 동안의 데이터를 포함하는 것은 "구식 방식"으로 작성된 것일 필요가 없을 때 훨씬 더 털이 나옵니다.

0

매월 이전 판매를 모두 합산하지 않으려면 어떻게 든 총 판매를 추적해야합니다. 우리가리스트를 만들고 그 마지막 요소를 다음 요소를 계산하기위한 현재 합계로 사용할 수 있기 때문에 Aggregate 함수는 괜찮습니다.

var sales = Enumerable.Range(1,12).Select(x => x * 10).ToList(); 
var sums = sales.Aggregate(new List<int>(), (list, sale) => list.Concat(new List<int>{list.LastOrDefault() + sale}); 
관련 문제