Получить результаты из запроса Linq (System.Data.Entity.Infrastructure.DbQuery) и преобразовать в список - PullRequest
0 голосов
/ 13 мая 2019

У меня есть запрос linq, который возвращает несколько строк из таблицы, и я хотел бы получить число строк, а также изменить результаты из System.Data.Entity.Infrastructure.DbQuery на List.strUserID не является первичным ключом таблицы обслуживания клиентов.

var AllCustomerServices = from service in _context.CustomerServices
    where service.strUserID == Session["userID"].ToString()
    select service;

Это исключение для следующего кода:

if (AllCustomerServices.Count() > 0)
{
    List<CustomerServices> cstSrvs = AllCustomerServices.ToList();
}

Исключение:

'AllCustomerServices.ToList () 'вызвал исключение типа' System.NotSupportedException '[NotSupportedException: LINQ to Entities не распознает метод метода' System.Object get_Item (System.String) ', и этот метод нельзя преобразовать в выражение хранилища.]

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Это должно работать, но я не понимаю, почему вы пытаетесь использовать Список, вставленный в другой Список

var AllCustomerServices = _context.CustomerServices.Where(w=>w.strUserID == Session["userID"].ToString()).ToList();

    if (AllCustomerServices.Any())
    {
        List<CustomerServices> cstSrvs = new List<CustomerServices>();
        cstSrvs.AddRange(AllCustomerServices);
    }

PS Это var AllCustomerServices уже равно List<CustomerServices>

0 голосов
/ 13 мая 2019

Попробуйте сначала получить значение сеанса в переменной:

var value = Session["userID"].ToString(); //Watch out for nulls, by the way

var AllCustomerServices = from service in _context.CustomerServices
where service.strUserID == value
select service;

Сообщение об ошибке указывает на то, что LINQ to Entities пытается преобразовать вызов в Session["UserID"] во что-то, что он может выполнить в хранилище, хотя на самом деле все, что вам нужно передать в хранилище, - это фактическое значение.

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