Linq to实体不识别方法。在尝试执行Linq查询时,我得到了以下错误:Linq to Entites不识别‘boolealIsCharityMatching(System.String,System.String)’方法,而且此方法无法转换为存储表达式。我已经读过很多以前的问题,人们会得到同样的错误,如果我正确理解,这是因为LINQto实体需要将整个Linq查询表达式转换成服务器查询,因此您不能在其中调用外部方法。我还没能把我的场景转化成一些有用的东西,我的大脑开始融化,所以我希望有人能给我指明正确的方向。我们使用的是实体框架和规范模式(这两者我都是新手)。下面是使用规范的代码:ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);charities = charitiesRepository.
Find(specification).OrderBy(p => p.RegisteredName).ToList();下面是Linq表达式:public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied(){
return p => p.IsCharityMatching(this.charityName, this.charityReference);}以下是IsCharityMatching方法:public bool IsCharityMatching(string name, string referenceNumber){
bool exists = true;
if (!String.IsNullOrEmpty(name))
{
if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
!this.alias.ToLower().Contains(name.ToLower()) &&
!this.charityId.ToLower().Contains(name.ToLower()))
{
exists = false;
}
}
if (!String.IsNullOrEmpty(referenceNumber))
{
if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
{
exists = false;
}
}
return exists;}如果你需要更多的信息,请告诉我。非常感谢,安娜莉
添加回答
举报
0/150
提交
取消