0

使用 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();
4

1 回答 1

6

并非所有方法都受支持。诸如包含和子字符串之类的东西可能会起作用。但是您不能期望底层 LINQ 提供程序能够将任意 C# 方法转换为 SQL。底层数据库甚至可能不知道正则表达式是什么。

在服务器上执行查询后,您必须在客户端进行过滤:

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

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

于 2013-05-17T13:09:55.963 回答