2013-07-24 235 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