2011-06-11 24 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の部分を3つのフィールドとして返す必要があり、受信側のアプリケーション上でそれをどのようにレンダリングするべきかを決定する必要があります。 – 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) 
    }; 
関連する問題