您的位置:首页 > 数据库

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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: