2011-10-18 9 views
1

VB.NET LINQでこのSQLクエリを書くにはどうすればいいですか?VB.NET LINQでこのSQLクエリを書く方法

SELECT COUNT(*) AS COUNT_NO 
FROM A INNER JOIN B ON A.ID = B.ID 
WHERE A.SERIAL_NO IN (SELECT MAX (A.SERIAL_NO) 
         FROM A INNER JOIN B ON A.ID = B.ID 
         GROUP BY A.SUBJECT_ID) 
AND B.STATUS = 'N'; 

おかげ

+0

クエリで 'group by'の使い方は何ですか? –

答えて

0

まあ、合理的に直接C#の変換は次のようなものになるだろう:私はあなたがかなり似てVBにそれを変換することができ想像

var validSerialNumbers = from a in dbContext.A 
         join b in dbContext.B on a.ID equals b.ID 
         group a.SerialNo by a.SubjectId into g 
         select g.Max(); 

var query = from a in dbContext.A 
      join b in dbContext.B on a.ID equals b.ID 
      where validSerialNumbers.Contains(a.SerialNo) 
      where b.Status == "N" 
      select new { a, b }; 

var count = query.Count(); 

。残念ながら、リフレクターはこれについてはうまくやっていませんが、私が知っている限り、1対1のコンバートを行うべきです。

+0

それは今働いています... –

関連する問題