我正在使用EF6开发ASP.NET MVC 5应用程序。我有大约5000个实体,我通过LINQ查询它们来收集所有学生的学费:
模型
public class Student
{
public string ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual IList<Payment> Payments { get; set; }
}
public class Payment
{
public string ID { get; set; }
public double Tuition { get; set; }
public int Month { get; set; } //Tuition added monthly
public Student Student { get; set; }
}
例如:
student 1:
{payments{1000}, payments{1500}, payments{3000}}
student 2:
{payments{400}, payments{1700}, payments{4000}}
...
student n:
{payments{5000}, payments{6500}, payments{7000}}
和我想要的查询是每个学生的总学费的学生的集合:
var result = {{student1, 5500}, {student2, 6100}, ...}
实现这一目标的最佳途径是什么?
答案 0 :(得分:2)
您可以使用此LINQ查询,让EF构建SQL服务器执行工作的查询。
context.DbSet<Student>().Select(o => new {
Student = o,
TotalTution = o.Payments.Sum(p => p. Tution)
)}
答案 1 :(得分:1)
CREATE INDEX contacts_ndx_1 ON contacts(company_or_person, contact_info, owner_id)
如果你喜欢像我这样少的lambdas,那么这是一个可读的版本:)