如何总结每个学生的学费:什么质疑?

时间:2015-12-13 16:45:24

标签: c# asp.net-mvc performance linq entity-framework-6

我正在使用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}, ...}

实现这一目标的最佳途径是什么?

2 个答案:

答案 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,那么这是一个可读的版本:)