linqクエリを実行しようとすると、次のエラーが発生します。
LINQ to Entitiesは、メソッド'Boolean IsCharityMatching(System.String、System.String)'メソッドを認識せず、このメソッドをストア式に変換できません。
人々が同じエラーを受け取る以前の質問をたくさん読みました。これを正しく理解しているのは、LINQ to Entitiesではlinqクエリ式全体をサーバークエリに変換する必要があるため、外部メソッドを呼び出すことができないためです。初期化。私は自分のシナリオをまだうまくいくものに変換することができず、私の脳は溶け始めているので、誰かが私を正しい方向に向けてくれることを望んでいました。私たちはEntityFrameworkと仕様パターンを使用しています(そして私は両方に不慣れです)。
仕様を使用するコードは次のとおりです。
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;
}
さらに情報が必要な場合はお知らせください。
どうもありがとう、
アネリー