以下のSQLをLINQクエリに変換するのに行き詰まっています。基本的には、テーブルの成績で試験をグループ化し、合格、不合格、受験回数、合格率の合計を計算したいだけです
SELECT testID,
(SELECT COUNT(testID) FROM tblGrade AS b
WHERE b.testID= a.testID AND b.Grade < 80) AS 'Failed',
(SELECT COUNT(testID) FROM tblGrade AS b
WHERE b.testID= a.testIDAND b.Grade >= 80) AS 'Passed',
--taken = failed + passed,
--passingrate = (passed / taken) * 100
FROM dbo.tblGrade AS a
GROUP BY testID
ORDER BY testID
編集:以下の私の解決策:それは機能しますが、特に失敗したプロパティと渡されたプロパティが最善の方法ではないと思います。
var xx1 = _unitOfWork.tblGrade.GetAll().GroupBy(a => new { a.testID});
var xx2 = xx1.Select(b => new
{
testID= b.Key.testID,
failed = _unitOfWork.tblGrade.Query(filter: a => a.testID == b.Key.testID).Where(c => c.Grade < 80).Count(),
passed = _unitOfWork.tblGrade.Query(filter: a => a.testID == b.Key.testID).Where(c => c.Grade >= 80).Count(),
//taken = failed + passed,
//passingrate = (passed / taken) * 100
}).ToList();