C# 如何在linq中使用avg()

C# 如何在linq中使用avg(),c#,sql,linq,C#,Sql,Linq,我正在尝试将我的sql命令写入Linq: SQL: select avg(sub.evaluation) from submit_task sub where student_id='" + idStudent + "' and state='close'; double avg = (ado.submit_task.Where(r => (r.id == idStudent && r.state == "close")).Average(r => r.evalua

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

SQL:

select avg(sub.evaluation) from submit_task sub where student_id='" + idStudent + "' and state='close';
double avg = (ado.submit_task.Where(r => (r.id == idStudent && r.state == "close")).Average(r => r.evaluation));

avgStudent = avg.ToString();
Linq:

select avg(sub.evaluation) from submit_task sub where student_id='" + idStudent + "' and state='close';
double avg = (ado.submit_task.Where(r => (r.id == idStudent && r.state == "close")).Average(r => r.evaluation));

avgStudent = avg.ToString();
但这不起作用,当我删除
&&r.state==“close”
语句时,我得到了结果,但它是不正确的


谢谢。

我用一组样本数据尝试了同样的方法,效果很好

 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; }
}
List学生=新列表
{
新学生{id=“1”,state=“close”,evaluation=5},
新学生{id=“1”,state=“close”,评估=4}
};
双平均值=(学生。其中(r=>(r.id==“1”和&r.state==“关闭”)。平均值(r=>r.evaluation));
公立班学生
{
公共字符串id{get;set;}
公共字符串状态{get;set;}
公共int求值{get;set;}
}

可能您应该检查数据库中的数据,或者修改查询的
state=“close”
部分

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();

“不工作”到底是什么意思?您说您在某些情况下得到了一个结果,但不正确,您得到了什么结果,您期望得到什么?还要注意,在您的SQL版本中,您无论如何都应该使用参数化查询…所谓“不工作”,我的意思是,在db中找不到任何记录,但当我删除此语句时,我得到了结果,f.e.:来自值:5,10,15我得到平均值=4是否可能状态为“关闭”而不是“关闭”?:)linq查询中的
r.id
是否可能引用了与sql查询中的
student\u id
不同的字段?这两个查询之间的所有其他相关名称都是相同的,因此我想知道这两个查询是否在不同的字段上进行过滤。@user1726810:请检查
ado中的对象数。submit_task
,如果可能的话,发布数据库表data[sample]和模型以检查state属性的数据类型。