Linq to实体不识别方法。

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;}

如果你需要更多的信息,请告诉我。

非常感谢,

安娜莉


慕尼黑5688855
浏览 443回答 3
3回答

白板的微信

我和你有个类似的问题这个LINQ文档帮助我找到了正确的字符串函数来解决这些限制。
打开App,查看更多内容
随时随地看视频慕课网APP