Company 1: (Input Box 1)
Company 2: (Input Box 2)
...
我在许多地方都有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;
}
并将其转换为方法,但是Linq不允许我运行它,并给了我这个错误。如何解决此错误?
错误文字
LINQ to Entities无法识别方法'Boolean SearchPersonByName(MrSanadBaseDb.Entities, System.Nullable`1 [System.Int64],System.String)方法和此方法 方法不能转换为商店表达式。
答案 0 :(得分:1)
答案 1 :(得分:0)
如 @KingOfArrows 所述,您的SearchByPerson
方法无法翻译,因此您需要将此方法写入Expression中。此外,实体框架允许您在相同的上下文中编写子查询。
这样您就可以编写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();