возвращение нескольких полей обратно из лямбда-линии Linq - PullRequest
1 голос
/ 17 января 2011

У меня есть следующий код, который возвращает результаты обратно из базы данных, где columnName = Y'.Кодовые слова работают хорошо, пока я не хочу ограничить, какие поля возвращаются запросом.

Я получаю ошибку

Невозможно неявно преобразовать тип 'System.Linq.IQueryable [AnonymousType # 1]' в'System.Linq.IQueryable [MyApp.Models.Approved].Существует явное преобразование (вам не хватает приведения?)

public IQueryable<Approved> ReturnRecordsByObjectiveFlag(string columnName)
    {
        var param = Expression.Parameter(typeof(Approved), "x");
        var predicate = Expression.Lambda<Func<Approved, bool>>(
            Expression.Equal(
                Expression.PropertyOrField(param, columnName),
                Expression.Constant('Y',typeof(char?))
            ), param);
        return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });
    }

именно в этой строке я получаю сообщение об ошибке

return db.Approved.Where(predicate).Select(x =>new{x.RefNo, x.RefGroup, x.Location });  

Где я могу сделать приведение?

Большое спасибо Марку Гравеллу за Ответ на предыдущий вопрос по этому же методу

Ответы [ 2 ]

6 голосов
/ 17 января 2011

Это должно работать

return db.Approved.Where(predicate).Select(x =>new Approved{x.RefNo, x.RefGroup, x.Location });  

Это выдает эту ошибку, потому что оператор выбора создает анонимный тип

1 голос
/ 03 июня 2013

Попробуйте следующий код.

return db.Approved.Where(predicate).Select(x =>new {x.RefNo, x.RefGroup, x.Location });  

Как создать анонимный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...