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'类型的操作数
我该怎么做才能解决这个问题?
答案 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匹配)。