2011-06-11 2 views
0

다음 SQL 쿼리를 LINQ 식으로 변환 할 수 있습니까?누군가가 SQL 쿼리를 LINQ 표현식으로 변환 할 수 있습니까?

select student.StudentID, 
     student.FirstName + ' ' + student.MiddleInitial + ' ' + student.LastName, 
     student.OpenDate,  
     acct.Balance  
from Student student 
inner join 
(Select StudentID, Sum(Amount) as Balance 
from Account 
Group by StudentID) as acct on student.StudentID = acct.StudentID 

다음 LINQ 표현 작동

! Phil 정말 고마워!

var results = (from s in Students  
      join a in Accounts on s.StudentID equals a.StudentID  
      group a by new     
      {s.StudentID, s.FirstName, s.MiddleInitial, s.LastName, s.OpenDate}    
      into z  
      select new  
      { StudentID = z.Key.StudentID,   
       FirstName = z.Key.FirstName, 
       MiddleInitial = z.Key.MiddleInitial, 
       LastName = z.Key.LastName,   
       OpenDate = z.Key.OpenDate,   
       Balance = z.Sum(a=> a.Amount)  
      } 
      ); 

고맙습니다!

+0

SQL 쿼리에 프레젠테이션 논리를 혼합해서는 안됩니다. 이 쿼리는 name의 세 부분을 세 개의 필드로 반환해야하며, 수신하는 응용 프로그램에서이를 렌더링하는 방법이 있어야합니다. – svick

+0

당신은 정확합니다, 고마워요. 이름의 일부만 반환하고 프레젠테이션 레이어에서 형식을 처리하도록 쿼리를 수정합니다. – rk1962

답변

2

시도해주세요.

var stu = 
    from s in db.Students 
    join a in db.Account on s.StudentID equals a.StudentID 
    group a by new 
       {s.StudentID, s.FirstName, s.MiddleInitial, s.LastName, s.OpenDate} 
      into z 
    select new 
    { StudentID = z.Key.StudentID, 
     FullName = string.Format("{0} {1} {2}",z.Key.FirstName, z.Key.MiddleInitial, z.Key.LastName), 
     OpenDate = z.Key.OpenDate, 
     Balance = z.Sum(a=>a.Amount) 
    }; 
관련 문제