我搜索动态linq-to-sql包含(StartsWith / EndsWith)方法。
我已经尝试了以下代码,但它没有用。
有什么想法吗?
public static IQueryable<T> WhereContains<T, V>(this IQueryable<T> queryable, string propertyName, V propertyValue)
{
ParameterExpression pe = Expression.Parameter(typeof(T), "p");
Expression left = Expression.Property(pe, propertyName);
Expression right = Expression.Constant(propertyValue, typeof(V));
IQueryable<T> x = queryable.Where<T>(
Expression.Lambda<Func<T, bool>>(
Expression.Call(
typeof(T).GetMethod("Contains"),
left,
right),
new ParameterExpression[] { pe }));
return x;
}
答案 0 :(得分:1)
LINQ-to-SQL知道如何为字符串翻译StartsWith,EndsWith和Contains。
例如:
View.Customers = from c in db.Customers
where c.ContactName.EndsWith("c")
orderby c.CompanyName
select c;
如果你试图实现某种反射风格的任何包含两个参数的包含方法,你将会有更难的时间......