如何在Linq中使用

时间:2018-12-31 10:18:30

标签: c# linq

我想在linq中使用where 错误提示无法将类型字符串隐式转换为xx.modules.Students

这是我的代码

Students student = new Students();
int userId = Convert.ToInt16(InputAPIVM.USERID);
student = db.Students.Where(x => x.UserId == userId).ToString();

3 个答案:

答案 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可用于返回默认的学生实例或引发有意义的异常。

这可以防止您在不期望的情况下意外撞到空学生。