我想声明一个变量来保存查询结果从LINQ to SQL,如下所示:
Dim query As IQueryable(Of Student)
If isNoUserName Then
query = From st In db.Students _
Order By st.AssignedId Ascending _
Where (st.studentId = studentId _
Select st
Else
'' error here
query = From st In db.Students _
Order By st.firstName Ascending _
Join user In db.MSUsers On user.UserId Equals st.UserId _
Where st.studentId = studentId _
Select st.firstName, st.lastName, user.userName
End If
Return query
错误:从'System.Linq.IQueryable(Of)'到'System.Linq.IQueryable(Of Student)'的转换。
如何声明变量“query”来保存“Student”和“User”表中的数据?
谢谢。
答案 0 :(得分:1)
query
被声明为IQueryable<Student>
,但是你看第二个查询,你实际上并没有返回学生 - 你正在返回由firstName
组成的编译器生成的类型,lastName
和userName
。尝试将第二个查询更改为以:
Select st;
编辑:
重新需要st
以外的数据,然后您可以尝试使用query
类型的技巧;我将使用C#作为插图,因为我的VB是只读的:
var query = Enumerable.Repeat(new {firstName="",lastName="",userName=""}, 0);
...
if(isNoUserName) {
query = ...
select new {st.firstName, st.lastName, userName = ""};
} else {
query = ...
select new {st.firstName, st.lastName, user.userName };
}