Bir linq sorgusu yapmaya çalışırken aşağıdaki hatayı alıyorum:
LINQ to Entities, 'Boolean IsCharityMatching (System.String, System.String)' yöntemini tanımıyor ve bu yöntem bir mağaza ifadesine çevrilemez.
İnsanların aynı hatayı aldığı birçok önceki soru okudum ve bunu doğru anlarsam, bunun nedeni LINQ to Entities'in tüm linq sorgu ifadesinin bir sunucu sorgusuna çevrilmesini gerektirmesi ve bu nedenle bir dış yöntemi çağıramamanızdır. içinde. Senaryomu henüz işe yarayan bir şeye dönüştüremedim ve beynim erimeye başladı, bu yüzden birinin beni doğru yöne yönlendirmesini umuyordum. Entity Framework ve belirtim kalıbını kullanıyoruz (ve her ikisinde de yeniyim).
Spesifikasyonu kullanan kod şu şekildedir:
ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);
charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
İşte linq ifadesi:
public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
İşte IsCharityMatching yöntemi:
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;
}
Daha fazla bilgiye ihtiyacınız olursa bana bildirin.
Çok teşekkürler,
Annelie
Find()
nasıl kullandığınızı , nasıl kullandığınızı görmek güzel olurdu IsSatisfied()
.