LINQ to Entities无法识别方法'System.Linq.IQueryable`1 [英] LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1

查看:173
本文介绍了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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆