【发布时间】:2011-07-08 05:26:28
【问题描述】:
我的 EF 有一个通用存储库。它工作得很好。但是今天我发现我需要得到不完全匹配的结果,而是应该像 SQL 的“LIKE”一样,它可以得到任何具有匹配后缀或列前缀的东西。现在它所做的是 Equal Operator。如何调整此代码以使其表现得像 LIKE 而不是相等?
public IList<TEntity> SelectManyByColumnKeywordLike(string Key, string columnName)
{
// First we define the parameter that we are going to use the clause.
var xParam = Expression.Parameter(typeof(TEntity), typeof(TEntity).Name);
MemberExpression leftExpr = MemberExpression.Property(xParam, columnName);
Expression rightExpr = Expression.Constant(Key);
BinaryExpression binaryExpr = MemberExpression.Equal(leftExpr, rightExpr);
//Create Lambda Expression for the selection
Expression<Func<TEntity, bool>> lambdaExpr =
Expression.Lambda<Func<TEntity, bool>>(binaryExpr,
new ParameterExpression[] { xParam, });
//Searching ....
IList<TEntity> resultCollection = ((IADRRepository<TEntity, TContext>)this).SelectAll
(new Specification<TEntity>(lambdaExpr));
if (null != resultCollection && resultCollection.Count() > 0)
{
//return valid single result
return resultCollection;
}//end if
return null;
}
【问题讨论】:
标签: .net entity-framework linq sql-like