具有自定义方法的 LINQ to Entities Where 子句

Sup*_*JMN 1 .net c# linq-to-entities entity-framework entity-framework-core

我正在使用 Entity Framework Core (2.0) 并且我有以下疑问。

我不确定这样做时会发生什么:

context.Customers.Where(c => MyCustomMethod(c));

bool MyCustomMethod(Customer c) 
{
    return c.Name.StartsWith("Something");
}
Run Code Online (Sandbox Code Playgroud)

它是否可以毫无问题地转换为 SQL?

它与写作不同吗:

context.Customers.Where(c => c.StartsWith("Something"));
Run Code Online (Sandbox Code Playgroud)

简而言之,我能否将我对 Where 类的验证封装在方法中?它会破坏到 SQL 的转换吗?

Ips*_*aur 5

不,您不能在 EF LINQ 查询中调用自定义方法,因为 EF 将无法生成该方法的表达式树,因此无法将其转换为 SQL。

有关表达式树的更多信息,请参阅链接