[英]How to convert bool to expression
var item = Db.BuyFactorWithTag.Where(b =>
!b.IsSell && SearchUtility.SearchPersonByName(MR_SANAD_BASE , b.FK_Seller , input)).ToList();
public static bool SearchPersonByName(MrSanadBaseDb.Entities db, long? id, string input)
{
id = id ?? 0;
return db.Person.FirstOrDefault(p => p.PK_Person == id && !p.IsDeleted && p.FullName.Contains(input)) != null;
}
我在很多地方都有SearchByPersonName
並將其變成了一種方法,但是 Linq 不允許我運行它並給我這個錯誤。 我該如何解決這個錯誤?
錯誤文本
LINQ 到 Entities 無法識別方法 'Boolean SearchPersonByName(MrSanadBaseDb.Entities, System.Nullable`1[System.Int64], System.String)' 方法,並且此方法無法轉換為存儲表達式。
正如@KingOfArrows提到的,您的SearchByPerson
方法無法翻譯,因此您需要將此方法寫入 Expression。 此外,Entity Framework 允許您在相同的上下文中編寫子查詢。
這樣您就可以編寫 LINQ 如下:
var item = Db.BuyFactorWithTag.Where(b =>
!b.IsSell &&
DB.Person.Any(p => p.PK_Person == (b.FK_Seller.HasValue ? b.FK_Seller.Value : 0) && !p.IsDeleted && p.FullName.Contains(input))).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.