我想在ASP.NET MVC 5中进行自定义数据库查询。
我有一个过滤表单,可以选择从下拉列表中选择一个列,然后在点击搜索按钮后在文本框中输入搜索短语,该按钮应该显示来自sql数据库的结果。
我的表单已准备好,所有变量都已设置我在构建此类查询时遇到了困难:
"SELECT * FROM table WHERE "+ dropDownListResult +" = " + searchStringFromTxtBox +" ";
我尝试了几种不同的选择,但没有达到预期的效果。
qry = from a in db.Table
where dropDownListResult == searchStringFromTxtBox
select a;
或
qry = qry.Where(s => s.Equals(dropDownListResult).Contains(searchStringFromTxtBox));
我知道这可能是一个虚假的问题,但我没有足够的时间寻找答案。
请指出正确的方向。
答案 0 :(得分:0)
您必须创建表达式树并将其传递给Where方法:
public static Expression<Func<TEntity, bool>> GetPropertyEqualityExpression<TEntity, TProperty>(string propertyName, TProperty propertyValue)
{
var parameter = Expression.Parameter(typeof(TEntity));
var property = Expression.Property(parameter, propertyName, null);
var equality = Expression.Equal(property, Expression.Constant(propertyValue));
var lambda = Expression.Lambda<Func<TEntity, bool>>(equality, parameter);
return lambda;
}
var condition = GetPropertyEqualityExpression<MyClass, string>(dropDownListResult, searchStringFromTxtBox)
var qry = source.Where(condition);