最佳答案
在尝试执行 linq 查询时,我得到了以下错误:
LINQtoEntity 不识别方法‘ Boolean’ (System.String,System.String)的方法,以及这个 方法无法转换为存储表达式。
我读过很多以前的问题,其中人们得到相同的错误,如果我理解正确,这是因为 LINQ 到实体需要整个 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);
}
以下是 IsCharitymatch 方法:
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;
}
如果你需要更多信息,请告诉我。
非常感谢,
安妮莉