2013-07-24 166 views
0

我想在實體框架中使用LINQ查詢來獲取學生詳細信息及其參加時間的列表。linq select語句中的子查詢

我正在使用以下查詢來綁定學生詳細信息列表以及他們參加的總小時數。

var students = (from pa in db.tblstudents 
       select new studentModel 
       { 
        Name = pa.Name, 
        StudentID = pa.ID, 
        RollNO = pa.rollNO, 
        Department = pa.Department, 
        Phone = pa.Phone, 
        Address = pa.Address, 
        TotalHours = (from time in tblhours 
            where time.studentID = pa.ID 
            select time.hours).Sum() 
       }).Distinct().AsQueryable().ToList(); 

my studentModel looks like below:- 
public class StudentModel 
{ public string Name { get; set; } 
public int StudentID { get; set; } 
public string RollNO{ get; set; } 
public string DepartMent{ get; set; } 
public long Phone{ get; set; } 
public string Address{ get; set; } 
public string Address2{ get; set; } 
public decimal TotalHours{ get; set; } 
} 

tblhours和tblstudent由studentid和相關的,如果我想獲得特定TIMEPERIOD我怎麼能做到這一點內所有學生參加小時?

我得到的錯誤是「只有參數構造函數初始化和LINQ中支持到實體」當我嘗試上述查詢

我想我錯了,當我使用子查詢選擇總時間...

+0

您的子查詢不應該導致任何問題。也許是'studentModel'類。你能分享這堂課的代碼嗎?至少,構造函數的簽名? –

回答

0

請確保您有在​​類的空構造

順便說一句,如果你建立關係正常,你應該能夠做到這一點,以及

TotalHours = pa.tblhours.Sum(time=>time.hours) 
+0

tblhours和tblstudent由studentid相關,如果我想要在特定的時間段內獲得每個學生參加的小時數,我該怎麼做? – subash