如何将整数与lambda进行比较?

时间:2014-05-23 18:04:02

标签: c# .net lambda

public static bool StudentUpdate(string studentId)
{
    using (var db = new UniversityContext())
    {
        int idtoupdate = Convert.ToInt32(studentId);
        Student temp = db.Students.Where((a => a.Id) == idtoupdate)
                                  .SingleOrDefault();
        if (temp != null)
        {
            temp.FirstName = feilds[0];
            temp.LastName = feilds[1];
            temp.Average = Convert.ToSingle(feilds[2]);
            db.SaveChanges();
            return true;
        }
    }
    return false;
}

我需要使用实体框架更新存储在数据库中的一些信息,但是当我尝试此代码时,我收到以下错误消息:

  

运算符'=='不能应用于'lambda expression'和'int'类型的操作数

我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:4)

尝试:

Student temp = db.Students.Where(a => a.Id == idtoupdate).SingleOrDefault();

答案 1 :(得分:0)

你的错误位置应该是Where((a) => a.Id == idtoupdate)

另外,正如Ulugbek所说,对于单个参数,括号不是必需的,您可以Where(a => a.Id == idtoupdate)

答案 2 :(得分:0)

lambda

a => a.Id

相当于

delegate(Student a) { return a.Id; }

即。需要Student并返回该学生的Id。另一方面,lambda

a => a.Id == idtoupdate

相当于

delegate(Student a) { return a.Id == idtoupdate; }

并返回bool值,表示Student是否包含您要匹配的Id

您可以在Where扩展方法的定义中获取关于您应该使用哪些提示的提示,该方法记录为采用Func<int, bool> predicate,即一个{{1}的函数(你要匹配的ID)并返回int(即每个是否与提供的Id匹配)。