如何在linq中平均()

时间:2013-05-05 12:04:07

标签: c# sql linq

我正在尝试将我的sql commang写入Linq:

SQL:

select avg(sub.evaluation) from submit_task sub where student_id='" + idStudent + "' and state='close';

的LINQ:

double avg = (ado.submit_task.Where(r => (r.id == idStudent && r.state == "close")).Average(r => r.evaluation));

avgStudent = avg.ToString();

但这不起作用,当我删除&& r.state == "close"语句时,我得到了结果,但它不正确。

谢谢。

2 个答案:

答案 0 :(得分:3)

我尝试了一组样本数据并且工作正常

 List<student> students = new List<student>
        {
            new student{id="1",state="close",evaluation=5},
            new student{id="1",state="close",evaluation=4}
        };
        double avg = (students.Where(r => (r.id == "1" && r.state == "close")).Average(r => r.evaluation));

public class student
{
    public string id { get; set; }
    public string state { get; set; }
    public int evaluation { get; set; }
}

可能是您应该检查数据库中的数据或修改查询的state="close"部分

答案 1 :(得分:0)

好的,这是代码,正在运行:

var avgEvalClose = (from sub in ado.submit_task
                    where sub.student_id.Equals(idStudent)
                    where sub.state.Equals("close")
                    select sub.evaluation).Average();
avgStudent = avgEvalClose.ToString();