我正在一个Parameters类中传递一组查询字符串参数,用于查询图像数据库.每次调用时,一些参数可以为null.所以在sql中我会建立像这样的查询
if (parameters.Value1 != null)
{
sql.Append("sql_where_clause");
}
if (parameters.Value2 != null)
{
sql.Append("sql_where_clause");
}
Run Code Online (Sandbox Code Playgroud)
我如何使用Linq做同样的事情?
Pet*_*ery 13
动态构建where子句的最佳方法是使用精彩的Albahari PredicateBuilder.
您可以使用它来构建包含OR以及where的子句表达式AND.对此的语言集成支持最初是有意的,但并没有完全成为C#3.
例如:
var whereClause = PredicateBuilder.False<Customer>();
if (parameters.Value1 != null)
{
whereClause = whereClause.Or(customer => customer.City == parameters.Value1);
}
var query = db.Customers.Where(whereClause);
Run Code Online (Sandbox Code Playgroud)
And*_*ock 11
简单,IQueryables在您枚举之前不会被评估,所以只需在where子句上标记.
if (parameters.Value1 != null)
{
results = results.Where(x => <some condition>);
}
if (parameters.Value2 != null)
{
results = results.Where(x => <some other condition>);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6827 次 |
| 最近记录: |