назначить обнуляемые объекты для возврата IQueryable - PullRequest
0 голосов
/ 31 октября 2009

Я возвращаю IQueryable<Customer> другому методу для некоторых операций запроса. Метод возврата выглядит так:

return from cust in _dbCustList
               select new Customer
               {
                   CustomerId = cust.Customer_Id,
                   FirstName= cust.First_Name,
                   LastName= cust.Last_Name,
                   DOB= cust.Date_Of_Birth,
                   LoginTime = cust.Login_Time ?? new TimeSpan(0, 0, 0);
               };

В приведенном выше результате, cust.Login_Time является нулевым свойством.

Когда я пытаюсь запросить приведенный выше результат, он выдает ошибку:

Method 'System.TimeSpan GetTimeSpan(System.Nullable`1[System.TimeSpan])' has no supported translation to SQL.

Как решить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2009

Я бы запросил анонимный тип и затем сопоставил бы результат с вашим бизнес-объектом в памяти:

var q = from cust in _dbCustList
        select new
        {
            cust.Customer_Id,
            cust.First_Name,
            cust.Last_Name,
            cust.Date_Of_Birth,
            cust.Login_Time
        };

return from cust in q.AsEnumerable()
       select new Customer
       {
           CustomerId = cust.Customer_Id,
           FirstName= cust.First_Name,
           LastName= cust.Last_Name,
           DOB= cust.Date_Of_Birth,
           LoginTime = cust.Login_Time ?? TimeSpan.Zero;
       };
0 голосов
/ 31 октября 2009

Почему вы используете нулевую проверку?

При удалении нулевой проверки письменный запрос преобразуется в SQL-запрос и будет выполнен. Теперь у вас есть результат, вы можете творить любую магию, какую захотите ...

...