Yes:

[LinqExtensionMethod]public static String Soundex(this String input)
{
        throw new NotImplementedException();
}


And you can call it like this (in SQL Server, because of the SOUNDEX 
function, but can be adapted to any server):

var soundexName = session.Query<Customer>().Select(x => 
x.Name.Soundex()).First();


Let me know if this helps!

RP


On Friday, June 6, 2014 1:38:16 PM UTC+1, Gunnar Liljas wrote:
>
> No, it's possible to create custom SQL with it as well, since you can 
> register custom functions. Not sure about this particular syntax though.
>
> /g
>
> On 5 jun 2014, at 20:54, Ricardo Peres <[email protected] <javascript:>> 
> wrote:
>
> AFAIK, this method only works for translating custom extensions into HQL. 
> Since HQL does not support MATCH...AGAINST, there's nothing you can do.
> One possible alternative could possibly be writing a custom function in 
> MySQL that would wrap MATCH...AGAINST and calling it from LINQ. That is 
> possible.
>
> RP
>
>
> On Thursday, June 5, 2014 8:41:49 AM UTC+1, Joel Hervén wrote:
>>
>> I´ve tried to write a LINQ extension that executes the MySQL function 
>> MATCH(...,...) AGAINST(...). But I have not been able to translate it into 
>> appropriate HQL because of the "two functions" syntax. 
>>
>> To have something to look at I wrote this method
>>
>> public override HqlTreeNode BuildHql(MethodInfo method, Expression 
>> targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder 
>> treeBuilder, IHqlExpressionVisitor visitor)
>>         {
>>             var e1 = treeBuilder.MethodCall("MATCH", new[] 
>>                   { 
>>                     visitor.Visit(arguments[0]).AsExpression(), 
>>                   });
>>
>>             var e2 = treeBuilder.MethodCall("AGAINST", new[] 
>>                   { 
>>                     visitor.Visit(arguments[1]).AsExpression(),
>>                   });
>>
>>             return
>>                 treeBuilder.Equality(e1, e2);
>>         }
>>
>> The Equality method is obviously not the correct thing here but it will 
>> generate the SQL "MATCH(....)+AGAINST(....)" which is very close to correct 
>> except the + sign that shouldn´t be there. I have looked at the 
>> HqlTreeBuilder many times but I can´t find a working method to just add up 
>> the methods like needed here.
>>
>> So next thing was to look at the HqlTreeBuilder and try to extend with an 
>> alternative
>>
>> public class HqlDoubleMethod : HqlBooleanExpression
>>     {
>>         public HqlDoubleMethod(IASTFactory factory, HqlExpression lhs, 
>> HqlExpression rhs)
>>             : base(0, "", factory, lhs, rhs)
>>         {
>>         }
>>     }
>>
>> Calling this method instead of Equality results in a 
>> RewriteEmptyStreamException rule b
>>
>>
>> Is it possible to implement this kind of function without modifying the 
>> Nhibernate-core?
>>
>  -- 
> You received this message because you are subscribed to the Google Groups 
> "nhusers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/nhusers.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to