2014-02-06 2 views
0

이것은 ASP.NET MVC 프로젝트입니다.열을 행과 날짜 행에서 열로 바꿈

Skill   Date  Offered  Answered Abandoned 
SampleSkill1 12/1/2013 53585  52549  1036 
SampleSkill2 12/1/2013 7170  6997  173 
SampleSkill1 11/1/2013 45635  45189  446 
SampleSkill2 11/1/2013 6481  6378  103 
SampleSkill1 10/1/2013 54838  54208  630 
SampleSkill2 10/1/2013 7361  7235  126 

내가 같은 테이블의 데이터를 얻기 위해 노력하고 있어요 : 현재 나는 테이블이 같은이

SampleSkill1 내가 얻을 수 있었던 가장 가까운이 같은 일을하고있다

Type  Oct  Nov  Dec 
Offered  53585 52549 1036 
Answered 45635 45189 446 
Abandoned 54838 54208 630 

이 :

var StatsList = db.Stats.Where(c => c.Skill == "SampleSkill1").ToList(); 
var OfferedStatsQuery = StatsList 
    .GroupBy(c => c.Skill) 
    .Select(g => new StatsPivot { 
     Skill = g.Key, 
     Oct = g.Where(c => c.Date.Month == 10).Sum(c => c.Offered), 
     Nov = g.Where(c => c.Date.Month == 11).Sum(c => c.Offered), 
     Dec = g.Where(c => c.Date.Month == 12).Sum(c => c.Offered) 
    }); 
var AnsweredStatsQuery = StatsList 
    .GroupBy(c => c.Skill) 
    .Select(g => new StatsPivot { 
     Skill = g.Key, 
     Oct = g.Where(c => c.Date.Month == 10).Sum(c => c.Answered), 
     Nov = g.Where(c => c.Date.Month == 11).Sum(c => c.Answered), 
     Dec = g.Where(c => c.Date.Month == 12).Sum(c => c.Answered) 
    }); 

나는 이것이 최선의 방법이 아니라고 확신하지만, LINQ를 처음 사용합니다. 원하는 결과를 효율적으로 얻는 방법에 대한 제안?

답변

0

글쎄 내 제안은 코드 대신 저장 프로 시저를 통해 데이터베이스 측에서 수행하는 것입니다. 당신의 일이 대단히 쉽고 효율적이되고 당신은 많은 옵션을 얻을 수 있기 때문에이 제안이 당신을위한 한계라면 확실하지 않습니다. 비슷한 질문에 대한 대답은 here 링크를 확인하십시오.

희망이 도움이됩니다.

관련 문제