在使用LINQ to NHibernate时如何调用ac#方法?

The*_*ght 0 c# regex linq asp.net nhibernate

在使用LINQ to NHibernate时如何调用ac#方法?

以下代码失败:

List<UriTemplate> result1 = (from uriTemplate in this.SessionFactory.Session.Query<UriTemplate>()
                             where Regex.Match(uri, uriTemplate.UriTemplateValue).Success
                             select uriTemplate).ToList();
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 6

并非所有方法都受支持.像Contains和Substring这样的东西可能有效.但是你不能指望底层LINQ提供程序能够将任意C#方法转换为SQL.底层数据库可能甚至不知道正则表达式是什么.

一旦在服务器上执行查询,就必须在客户端进行过滤:

List<UriTemplate> result1 = this
    .SessionFactory
    .Session
    .Query<UriTemplate>()
    .ToList()
    .Where(uriTemplate => Regex.Match(uri, uriTemplate.UriTemplateValue).Success)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

如果底层数据库支持可能通过某些本机函数完成的正则表达式查询,在这种情况下,native function如果要在服务器上进行过滤,则需要调用此函数.