我想在linq中使用where 错误提示无法将类型字符串隐式转换为xx.modules.Students
这是我的代码
Students student = new Students();
int userId = Convert.ToInt16(InputAPIVM.USERID);
student = db.Students.Where(x => x.UserId == userId).ToString();
答案 0 :(得分:1)
如果您希望有一个条目,则应该获取该条目,而不要像现在这样尝试输出可枚举的字符串:
student = db.Students.Where(x => x.UserId == userId).SingleOrDefault();
这可以简化为:
student = db.Students.SingleOrDefault(x => x.UserId == userId);
答案 1 :(得分:0)
使用SingleOrDefault
而不是Student
来获取ToString()
db.Students.Where(x => x.UserId == userId).SingleOrDefault();
答案 2 :(得分:0)
Student student = db.Students.SingleOrDefault(s => s.UserId == userId)
?? throw new InvalidOperationException($"No single student for UserId {userId}.");
您可以使用SingleOrDefault
-这将返回与用户ID匹配的第一个学生。
如果没有匹配的学生,则返回“学生”类型的默认值。如果Student是class
而不是struct
,则默认值为null-我认为情况是这样。
如果没有返回匹配的学生(空值),则null-coalescing operator可用于返回默认的学生实例或引发有意义的异常。
这可以防止您在不期望的情况下意外撞到空学生。