我正在创建一个字典,以便在我的应用程序中使用,如下所示。这是针对实体框架的。
var expressions = new Dictionary<string, Func<Expression, Expression, Expression>>
{
{ "is equal to", Expression.Equal },
{ "greater then", Expression.GreaterThan }
};
但我需要一个类似的表达";表达式;用于类似sql的查询。但这种方法并不存在。
表达式。相等的定义如下:
public static BinaryExpression Equal(Expression left, Expression right)
因此,我需要创建一个名为Like
的自定义方法。我该怎么做?我找不到。
public static BinaryExpression Like(Expression left, Expression right)
{
???
}
不确定这是否是您想要的,但您可以创建一个扩展方法。
public static class MyExtensions
{
public static BinaryExpression Like(this BinaryExpression obj, Expression left, Expression right)
{
//code here...
}
}
您可以从DbFunctions中获得,类似于
var methodInfo = typeof(DbFunctions).GetMethod(nameof(DbFunctions.Like), new Type[] { typeof(string) });
下面也是类似函数的定义。这将有助于
//
// Summary:
// When used as part of a LINQ to Entities query, this method invokes the canonical
// Like EDM operator to match an expression.
//
// Parameters:
// searchString:
// The string to search.
//
// likeExpression:
// The expression to match against.
//
// Returns:
// True if the searched string matches the expression; otherwise false.
//
// Remarks:
// You cannot call this function directly. This function can only appear within
// a LINQ to Entities query. This function is translated to a corresponding function
// in the database.
[SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "string")]
[SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "searchString")]
[SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "likeExpression")]
public static bool Like(string searchString, string likeExpression);