linq to sql的多条件动态查询
2008-04-27 00:16
197 查看
linq to sql的多条件动态查询确实是一件头痛的事情,用表达式树或反射方法要写一大堆代码,有时候想想与其这么复杂,还不如回到手动sql拼接的年代,但是技术总是向前发展的,终归还是要在linq上解决这一问题,无意在网上发现一个还算比较简单的办法,分享一下:
void ShowData()
//得到合同金额大于6000,或合同名称中包含"江华"字的条件
private bool GetCondition(T_Bargin _Table)
借助老外写的一个扩展表达式的类,可以把上篇中的代码写得更优雅
这是PredicateBuilder的源文件
public static class PredicateBuilder
List<Product> GetProductsByAND(params string[] keywords)
List<Product> GetProductsByOR(params string[] keywords)
void ShowData()
{
//var _products = GetProductsByOR("6111", "2350");
//Repeater1.DataSource = _products;
//Repeater1.DataBind();
var predicate = PredicateBuilder.True<Product>();
string _name = "6111";
if (!string.IsNullOrEmpty(_name))
{
predicate = predicate.And(p => p.Name.Contains(_name));
}
string _description = "长虹";
if (!string.IsNullOrEmpty(_description))
{
predicate = predicate.And(p => p.Description.Contains(_description));
}
using (DBDataContext db = new DBDataContext(Database.ConnectionString))
{
var _Products = db.Products.Where(predicate);
Repeater1.DataSource = _Products;
Repeater1.DataBind();
}
}
void ShowData()
//得到合同金额大于6000,或合同名称中包含"江华"字的条件
private bool GetCondition(T_Bargin _Table)
借助老外写的一个扩展表达式的类,可以把上篇中的代码写得更优雅
这是PredicateBuilder的源文件
public static class PredicateBuilder
List<Product> GetProductsByAND(params string[] keywords)
List<Product> GetProductsByOR(params string[] keywords)
void ShowData()
{
//var _products = GetProductsByOR("6111", "2350");
//Repeater1.DataSource = _products;
//Repeater1.DataBind();
var predicate = PredicateBuilder.True<Product>();
string _name = "6111";
if (!string.IsNullOrEmpty(_name))
{
predicate = predicate.And(p => p.Name.Contains(_name));
}
string _description = "长虹";
if (!string.IsNullOrEmpty(_description))
{
predicate = predicate.And(p => p.Description.Contains(_description));
}
using (DBDataContext db = new DBDataContext(Database.ConnectionString))
{
var _Products = db.Products.Where(predicate);
Repeater1.DataSource = _Products;
Repeater1.DataBind();
}
}
相关文章推荐
- linq to sql的多条件动态查询(上)
- 使用表达式树动态构建Linq查询条件来实现单个实体动态查询
- linq动态多条件查询
- MyBatis动态条件查询
- mybatis动态条件查询修改小例子
- ajax多条件查询动态分页
- 生成jFinal的动态条件查询语句的工具类 3ff8
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 动态的添加条件实现查询
- OpenJWeb 1.6版本中实现动态设置页面的查询条件列
- ibatis动态查询条件
- MyBatis中动态SQL语句完成多条件查询
- 如何在django的filter中传递字符串变量作为查询条件(动态改变查询条件)
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- jdbc动态条件查询防止sql注入的解决方案
- HaloDao之前后台全自动动态多条件查询组件实现(一)
- LINQ to SQL 运行时动态构建查询条件
- Hibernate3动态条件查询
- 使用ADF-BC 实现查询功能之四:通过代码动态设置Where条件参数
- ibatis动态查询条件