LINQ to Entities无法识别方法'System.Linq.IQueryable`1 [英] LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1
本文介绍了LINQ to Entities无法识别方法'System.Linq.IQueryable`1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我执行以下代码时:
When I execute the following code:
var resultDistrictServiceLogReportDetails =
_sOAPNoteRepository.GetAll()
.Where(i => i.CreatedBy == therapist.Id &&
i.DateofService < searchendDate &&
i.DateofService >= searchstartDate &&
i.TimeLogClientList.TimeLog.TimeLogActivity.SOAPReq.Value &&
i.Employee.Service != null &&
i.TimeLogClientList.TimeLog.TimeLogContractSite.ContractType
.ContractType1.ToLower().Equals(Utilities.SCHOOLDISTRICT.ToLower()) &&
i.TimeLogClientList.TimeLog.Errors == null && i.TimeLogClientList.TimeLog.Rejected == null &&
(i.TimeLogClientList.TimeLog.Void == null || !i.TimeLogClientList.TimeLog.Void.Value))
.Select(i => new
{
i.Client,
i.TimeLogClientList.Grade,
i.DateofService,
i.Time,
i.TimeLogActivity.ActivityDesc,
i.TimeLogClientList.TimeLog.TimeLogCategory.Category,
i.ActivityId,
i.ContractSiteId,
i.TimeLogContractSite.ContractSite,
i.TimeLogClientList.TherapistId,
ServiceId = i.Employee.ServiceId,
i.SNote,
i.ONote,
i.ANote,
i.PNote,
SignedDate = i.TimeLogClientList.TimeLog.SignedDate,
i.Location,
i.Employee,
ID = i.CreatedBy,
i.TimeLogClientList.TimeLog.ElapsedTime,
i.SupSignedBy,
i.SupSignedDate,
i.Employee3,
cptcode = (from cpt in _activityCPTCodeRepository.GetAll().Where((x => x.ActivityId == i.TimeLogActivity.Id && x.ServiceId == i.Employee.Service.Id))
select cpt.CptCode)
}).ToList();
执行此代码后我收到一条错误消息
LINQ to Entities无法识别方法'System.Linq.IQueryable`1 [LifeSpan.Data.ActivityCptCode] GetAll()'方法,并且此方法无法转换为商店表达式。
只有最后一列产生问题,否则此代码工作正常。
任何帮助或建议都将不胜感激。
after executing this code i got a error message that is
"LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[LifeSpan.Data.ActivityCptCode] GetAll()' method, and this method cannot be translated into a store expression."
only last column generate issue other wise this code working fine.
Any help or suggestion would be appreciated.
推荐答案
我已经解决了这个问题。只在Select函数之前添加单个函数AsEnumerable()。 :)
I have resolve it my self. only adding a single function "AsEnumerable()" before Select function. :)
var resultDistrictServiceLogReportDetails =
_sOAPNoteRepository.GetAll()
.Where(i => i.CreatedBy == therapist.Id &&
i.DateofService < searchendDate &&
i.DateofService >= searchstartDate &&
i.TimeLogClientList.TimeLog.TimeLogActivity.SOAPReq.Value &&
i.Employee.Service != null &&
i.TimeLogClientList.TimeLog.TimeLogContractSite.ContractType
.ContractType1.ToLower().Equals(Utilities.SCHOOLDISTRICT.ToLower()) &&
i.TimeLogClientList.TimeLog.Errors == null && i.TimeLogClientList.TimeLog.Rejected == null &&
(i.TimeLogClientList.TimeLog.Void == null || !i.TimeLogClientList.TimeLog.Void.Value)).AsEnumerable()
.Select(i => new
{
i.Client,
i.TimeLogClientList.Grade,
i.DateofService,
i.Time,
i.TimeLogActivity.ActivityDesc,
i.TimeLogClientList.TimeLog.TimeLogCategory.Category,
i.ActivityId,
i.ContractSiteId,
i.TimeLogContractSite.ContractSite,
i.TimeLogClientList.TherapistId,
ServiceId = i.Employee.ServiceId,
i.SNote,
i.ONote,
i.ANote,
i.PNote,
SignedDate = i.TimeLogClientList.TimeLog.SignedDate,
i.Location,
i.Employee,
ID = i.CreatedBy,
i.TimeLogClientList.TimeLog.ElapsedTime,
i.SupSignedBy,
i.SupSignedDate,
i.Employee3,
cptcode = _activityCPTCodeRepository.GetAll()
.Where(x => x.ActivityId == i.TimeLogActivity.Id && x.ServiceId == i.Employee.Service.Id)
.Select(x => x.CptCode).FirstOrDefault().ToString()
}).ToList();
这篇关于LINQ to Entities无法识别方法'System.Linq.IQueryable`1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文