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 };
}