Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算每个学生的学费:什么问题?_C#_Asp.net Mvc_Performance_Linq_Entity Framework 6 - Fatal编程技术网

C# 如何计算每个学生的学费:什么问题?

C# 如何计算每个学生的学费:什么问题?,c#,asp.net-mvc,performance,linq,entity-framework-6,C#,Asp.net Mvc,Performance,Linq,Entity Framework 6,我正在用EF6开发一个ASP.NETMVC5应用程序。我有大约5000个实体,我正在通过LINQ查询它们,以收集所有学费总额的学生: 模型 public class Student { public string ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public virtual IList<Payment>

我正在用EF6开发一个ASP.NETMVC5应用程序。我有大约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; }
}
我想查询的是每个学生的学费总额:

var result = {{student1, 5500}, {student2, 6100}, ...}

实现这一点的最佳方法是什么?

您可以使用此LINQ查询,并让EF构造查询,然后由SQL server完成这项工作

context.DbSet<Student>().Select(o => new { 
    Student = o, 
    TotalTution = o.Payments.Sum(p => p. Tution)
)}
context.DbSet().Select(o=>new{
学生=o,
TotalTution=o.Payments.Sum(p=>p.Tution)
)}

您可以使用此LINQ查询,并让EF构造查询,然后由SQL server完成这项工作

context.DbSet<Student>().Select(o => new { 
    Student = o, 
    TotalTution = o.Payments.Sum(p => p. Tution)
)}
context.DbSet().Select(o=>new{
学生=o,
TotalTution=o.Payments.Sum(p=>p.Tution)
)}
一个可读的版本,如果你喜欢像我这样的小羔羊:)

一个可读的版本,如果你喜欢像我这样的小羔羊:)

var query = from s in DbContext.Students
            select new {student=s, totalTuition=s.Payments.Sum(p=>p.Tuition)};