2011-04-18 4 views
0

아래 코드에서 deptGroup의 각 그룹 내에서 OBFY와 CFY의 합계를 개별적으로 수행하고 싶습니다. 누구나 아이디어가 있지만, 나는 coupla 물건을 시도했지만 그것을 얻을 수 없습니다. 감사!!LINQ : 메서드 스타일 linq을 사용하여 그룹화하는 방법?

var deptGroup = prodCostsTotals.AsQueryable() 
           .Select(r => dt.Rows.Add(new object[] 
            { 
             Convert.ToInt32(r.Field<string>("Proc")), 
             r.Field<string>("UnitL"), 
             r.Field<Decimal?>("OBFY"), 
             r.Field<Decimal?>("CFY") 
            })).GroupBy(g => g.Field<string>("Proc")); 

답변

2

그것은 당신이 DataRow의를 남용하는 날 것으로 보인다.

data.GroupBy(x => x.Proc) 
    .Select(g => new 
       { 
        Proc = g.Key, 
        OBFYSum = g.Sum(x => x.OBFY), 
        CFYSum = g.Sum(x => x.CFY) 
       }) 

을하지만 당신은 정말 DataTable로 시작하고 다른 DataTable에 중간 결과를 추가하려는 경우, 당신은 이런 식으로 할 수 있었다 : 당신이 좋은 클래스에서 데이터를 가지고 있다면, 당신은이처럼 쓸 수있다 : 내가 AsQueryable()의 사용이 쿼리의 첫 번째 부분에 어떤 영향을 미칠 것이다, 그러나 확실히 그룹에 영향을주지할지 아무 생각이

prodCostsTotals.AsQueryable() 
       .Select(r => dt.Rows.Add(new object[] 
        { 
        Convert.ToInt32(r.Field<string>("Proc")), 
        r.Field<string>("UnitL"), 
        r.Field<Decimal?>("OBFY"), 
        r.Field<Decimal?>("CFY") 
        })) 
       .GroupBy(g => g.Field<string>("Proc")) 
       .Select(g => new 
       { 
        Proc = g.Key, 
        OBFYSum = g.Sum(x => x.Field<Decimal?>("OBFY")), 
        CFYSum = g.Sum(x => x.Field<Decimal?>("CFY")) 
       }) 

참고.

관련 문제