ASP.NET MVC自定义LINQ查询

时间:2015-02-24 18:34:51

标签: c# asp.net linq

我想在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));

我知道这可能是一个虚假的问题,但我没有足够的时间寻找答案。

请指出正确的方向。

1 个答案:

答案 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);