这令我头疼。我这里有这个链接查询,可以获取ID
Dim mclassID = From x In db.SchoolClasses Where x.VisitDateID = _visitdateID Select x.ClassID
然后我有这个linq查询
ViewData("Staff") = From t In db.Staffs Where t.ClassID = mclassID Select t
非常感谢任何帮助。我尝试过很多东西,但无济于事。我尝试过转换,转换,操作数等等。
答案 0 :(得分:1)
问题是myClassID
是匿名的IQueryable
。您需要将其强制转换为另一种类型(List
是我最喜欢的),然后将其拉出该类型。因此,如果您要将其选择为List(Of Integer)
,则可以提取First()
,因为它将是唯一的。你可以尝试这样的事情:
Dim myClassIDList As List(Of Integer) = New List(Of Integer)( _
From x In db.SchoolClasses Where x.VisitDateID = _visitdateID Select x.ClassID)
Dim myClassID as Integer = myClassIDList.First()
答案 1 :(得分:0)
只是一个猜测,但是在括号中包含等式的右边会有帮助吗?即:
ViewData("Staff") = (From t In db.Staffs Where t.ClassID = mclassID Select t)
答案 2 :(得分:0)
你应该改变这个
Dim mclassID = From x In db.SchoolClasses Where x.VisitDateID = _visitdateID Select x.ClassID
选择单个实例或第一个实例,否则它会作为报告执行,返回IEnumerable
,这会导致您的错误。
或者你可以将你的第二个陈述改为
ViewData("Staff") = From t In db.Staffs Where mclassID.Contains(t.ClassID) Select t
利用mclassID
作为IEnumerable
的int。
答案 3 :(得分:0)
使用Select
运算符,您可以返回多个结果。如果您只期望一个结果(即您通过主键选择),那么您可以使用Single
或SingleOrDefault
(取决于是否有保证会得到结果)来获得一个结果
Dim mclassID = (From x In db.SchoolClasses _
Where x.VisitDateID = _visitdateID _
Select x.ClassID).SingleOrDefault()
答案 4 :(得分:0)
如果设置了合适的选项,则可以在输出中看到错误: -
将VS2010菜单导航到工具/选项/项目和解决方案/构建和运行/
将MSBuild Project构建输出详细程度设置为“Detailed”
我有一个类似的错误没有显示在错误列表中,但是我看到这个选项设置: - 错误BC30452:未对类型的System.Nullable(Of Integer)和'Integer'定义运算符'='。 从这个声明: - 如果tqGDBChart.UserIsGroupAdmin(Userid,Groupid)= 0则“用户不是该组的组管理员”
使用中间变量轻松修复它。
Dim GroupAdminCount As Integer = tqGDBChart.UserIsGroupAdmin(Userid, Groupid)
If GroupAdminCount = 0 Then 'User is not a group admin for this group
答案 5 :(得分:-1)
你试过了吗?
ViewData("Staff") = From t In db.Staffs Where t.ClassID.equals(mclassID) Select t