ビジュアル スタジオ 2008 | シルバーライト 3 | SQL サーバー 2005 | ドメイン サービス クラス | エンティティ データ モデル
FirstName、LastName、Semester、ProgramOfStudy、Columnなどの列を持つデータベーステーブル「Students」があります.......
目標は、指定されたSemesterおよびProgramofstudyのすべての学生の姓の最初の文字に基づいて、Total (姓の最初の文字でグループ化された学生の数) を返すことです。
動作するSQLは次のとおりです。
SELECT DISTINCT TOP (100) PERCENT LEFT(lastName, 1) AS 'LastNameStartsWith', COUNT(*) AS 'Total', academicPeriod, programCode
FROM dbo.UM_Students
GROUP BY LEFT(lastName, 1), academicPeriod, programCode
ORDER BY programCode, academicPeriod, 'LastNameStartsWith'
LinqPad で動作する LINQ は次のとおりです。
var query = from c in UM_Students
where c.AcademicPeriod == 200980 && c.ProgramCode == "BSED-ELED-ED"
group c by c.LastName[0] into cg
select new { LastNameStartsWith = cg.Key.ToString(), Total = cg.Count(), AcademicPeriod = 200980, ProgramCode = "BSED-ELED-ED" };
query.Dump();
これをドメイン サービス クラスに変換できませんでした。主な問題は、戻り値の型を間違って取得し、匿名型を処理することです。
これまでの私の努力は次のとおりです。
public List<lastLetterCounts> GetAlphaCount(int cycleID, string programCode)
{
List<lastLetterCounts> query = (from c in db.UM_StudentSet
where c.academicPeriod == 200980 && c.programCode == "BSED-ELED-ED"
group c by c.lastName[0] into cg
select new lastLetterCounts { LastNameStartsWith = cg.Key.ToString(), Total = cg.Count(), academicPeriod = cycleID, programCode = programCode }).ToList();
return query;
}
public class lastLetterCounts
{
[Key]
public string LastNameStartsWith { get; set; }
public int Total { get; set; }
public int academicPeriod { get; set; }
public string programCode { get; set; }
}
ソリューションはコンパイルおよび実行されますが、データは返されません。linq が 1 つの大きなチャンクとして評価されるため、デバッグ方法がわかりません。
これと同じ問題がここで尋ねられていますが、アプローチは異なります。