linq 实现查询字符串拼接 : And 和 OR 两种方式
2010-07-09 17:46
531 查看
N年前我们是这样来 拼接查询字符串的:
现在我们使用linq来实现上边的代码:
ps: 如果查询字符串内 不是AND,而是OR 的话
如:
此种情况,通过linq可以这样实现:
public string Test(string a, string b, string c,string d) { string sql = "SELECT * FROM Users WHERE 1=1"; if (!string.IsNullOrEmpty(a)) { sql += " AND name='" + a + "'"; } if (!string.IsNullOrEmpty(b)) { sql += " AND age='" + b+ "'"; } if (!string.IsNullOrEmpty(c)) { sql += " AND sex='" + c + "'"; } if (!string.IsNullOrEmpty(d)) { sql += " AND address='" + d + "'"; } return sql.ToString(); }
现在我们使用linq来实现上边的代码:
public void Test(string a, string b, string c,string d) { QueryContext query = new QueryContext(); var q = from u in query.Users select u; if (!string.IsNullOrEmpty(a)) { q = q.Where(p => p.name == a); } if (!string.IsNullOrEmpty(b)) { q = q.Where(p => p.age == b); } if (!string.IsNullOrEmpty(c)) { q = q.Where(p => p.sex == c); } if (!string.IsNullOrEmpty(d)) { q = q.Where(p => p.address == d); } q.ToList(); //上边的所有if,只有到此处才会执行 }
ps: 如果查询字符串内 不是AND,而是OR 的话
如:
public string Test(string a, string b, string c,string d) { string sql = "SELECT * FROM Users WHERE 1=1"; if (!string.IsNullOrEmpty(a)) { sql += " OR name='" + a + "'"; } if (!string.IsNullOrEmpty(b)) { sql += " OR age='" + b+ "'"; } if (!string.IsNullOrEmpty(c)) { sql += " OR sex='" + c + "'"; } if (!string.IsNullOrEmpty(d)) { sql += " OR address='" + d + "'"; } return sql.ToString(); }
此种情况,通过linq可以这样实现:
public void Test(string a,string b,string c,string d) { QueryContext query = new QueryContext(); var q1 = from u in query.Users where u.name== a && a != "" || u.age == b && b != "" || u.sex == c && c != "" || u.address ==d && d !="" select u; q1.ToList(); }
相关文章推荐
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- linq 实现查询字符串拼接 : And 和 OR 两种方式
- ASP EF框架,部分列查询。linq表达式和lamb表达式两种方式实现
- c# 使用linq查询子句方式实现 字符串数组统计操作
- 查询字符串中字母的个数(两种实现方式1,list与set集合 2,map集合)
- 用PredicateBuilder实现Linq动态拼接查询
- 统计查询-根据条件进行count的两种实现方式- oracle
- 查询如下课程平均成绩和及格率的百分数(用"1行"显示),使用两种方式实现。
- Oracle 模糊查询中不包括某字符串的实现方式
- 统计查询-根据条件进行count的两种实现方式- oracle
- 两个Repeater嵌套实现动态菜单(ado.net+sql和xml+Linq两种读取数据方式)
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
- 字符串拼接多种实现方式及性能详解
- js的两种查询方式 LHS and RHS
- 牛腩购物网31:首页修改(商品销售排行) 查询的行数,字段,表名不能使用参数化传值,而只能用拼接字符串的方式传值