为什么我收到此错误:运算符'&&'不能应用于System.Linq.IQueryable类型的操作数?

时间:2012-06-25 03:43:52

标签: asp.net-mvc-3 linq-to-sql

我正在尝试从实体中检索数据并填充viewModel属性,如下所示:

viewModel.Enrollments = db.Enrollments.Where(b => b.classDays == "Monday") && (db.Enrollments.Where(b => b.CourseID == courseID);

但我得到一个运算符&&不能应用于System.Linq.IQerable<>类型错误的操作数。您能帮忙找到具有相同ID的所有星期一课程吗?

我试过这个:viewModel.Enrollments = db.Enrollments.Where(b => b.classDays == "Monday")但我得到了所有周一课程,但我想将它们限制在特定的课程ID。

请帮忙!

2 个答案:

答案 0 :(得分:3)

您需要检查括号。这段代码甚至不会编译:

viewModel.Enrollments = db.Enrollments.Where(b => b.classDays == "Monday")
                    && (db.Enrollments.Where(b => b.CourseID == courseID);

在该代码中,您尝试在两次&&调用之间使用.Where(),这两次调用都返回IQueryable。你可能想在<{em} {/ 1>}子句中使用&&

.Where()

或者可能附加第二个viewModel.Enrollments = db.Enrollments.Where(b => (b.classDays == "Monday") && (b.CourseID == courseID)); 条款:

.Where()

请注意,viewModel.Enrollments = db.Enrollments.Where(b => b.classDays == "Monday") .Where(b => b.CourseID == courseID); 可以无限链接,实际上导致在生成的查询中以.Where()方式依次应用每个子句。

答案 1 :(得分:0)

&安培;&安培;运营商应该使用条件里面没有注册的人(在你的情况下)

试试这个:

viewModel.Enrollments = db.Enrollments.Where(b => (b.classDays == "Monday") && (b.CourseID == courseID));