我将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.
如何解决此错误?
答案 0 :(得分:0)
为什么使用空检查?
当您删除null检查时,写入的查询将被转换为SQL查询并将被执行。现在你有了结果,你可以做任何你想要的魔法......
答案 1 :(得分:0)
我会查询匿名类型,然后将结果映射到内存中的业务对象:
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;
};