2015-02-24 60 views
0

我想做出一个自定义的数据库查询在ASP.NET MVC 5ASP.NET MVC的自定义LINQ查询

我有是有一个选项,然后从下拉列表中的列的筛选形式然后在文本框中输入搜索词组,然后敲击搜索按钮以显示来自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

你不得不创造表达式树,并把它传递给'Where'方法。 – MarcinJuraszek 2015-02-24 18:38:43

回答

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); 
+0

非常感谢您的回复。 你能告诉我'源'是什么意思吗? – skywalker 2015-02-24 21:08:45

+0

您正在查询的集合。在你的情况下,它将是'dt.Table'。 – MarcinJuraszek 2015-02-24 21:18:38