FamilyAccountDataContext db = new FamilyAccountDataContext();//資料庫實體上下文
//linq實現兩表關聯查詢,使用group by進行分組,group和by之間放你後面要select的對象(如果只有一個欄位,可以直接寫,如果有多個可以像我一樣使用匿名對象)
//select的時候也使用匿名對象的方式,並可以命名(如:totalExpense);
var temp = from a in db.AccountTable
join p in db.InOrOutProjectTable
on a.InOrOutProjectID equals p.ID
where p.ProjectType == false & a.Date >= dateStart & a.Date < dateEnd
group new { p.ProjectName, a.Amount } by p.ProjectName into g
select new { g.Key, totalExpense = g.Sum(x => x.Amount) };
//這裡使用強型別的對象封裝上面得到的temp裡的欄位,並加入到泛型集合中作為repeater控制項的資料來源
List<Common.TotalAmountObj> list = new List<Common.TotalAmountObj>();
foreach (var item in temp)
{
Common.TotalAmountObj totalExpense = new Common.TotalAmountObj();
totalExpense.ProjectName = item.Key;
totalExpense.Amount = item.totalExpense;
list.Add(totalExpense);
}
this.repeaterExpenseReport.DataSource = list;
this.repeaterExpenseReport.DataBind();