Невозможно назначить запрос LINQ переменной - PullRequest
1 голос
/ 28 октября 2010

Я хочу объявить переменную для хранения результата запроса из 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"?

Спасибо.

1 Ответ

1 голос
/ 28 октября 2010

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 };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...