关于做高级查询的问题
我在做项目的时候,遇到了这样的问题,就是有六个可以供输入查询条件的文本框,这六个文本框只要输入的条件多于一个,就可以查询,现在问题时,我不知道用户输入了哪几个条件,这样该怎么查询数据库?我想用linq做,该怎么办?
[解决办法]
我在想先用一个条件进行查询,然后对查询的结果用第二个条件再次进行查询,依次这样?
并不感觉这样效率会很高。
[解决办法]
StringBuilder sb = new StringBuilder(); if (!string.IsNullOrEmpty(tid)) { sb.Append(" and typeid=" + tid); } if (!string.IsNullOrEmpty(cname)) { sb.Append(" and title like '%" + cname + "%'"); } Int64 total = 0; string TableName = " yjfw_info "; string ReFieldsStr = " id,InfoID,title,ifoLaiyuan,fabutime,shzt,typeid,tjzt,bzInt"; string OrderString = " bzInt desc,ID desc "; string StrWhere = " 1=1" + sb.ToString(); DataTable dt = pub.FindPageList(out total, PageIndex, 10, StrWhere, TableName, ReFieldsStr, OrderString, "ID"); RepList.DataSource = dt.DefaultView; RepList.DataBind();
[解决办法]
贴点代码,楼主参考
[解决办法]
public IQueryable<Class> Query(Class model) { var query = db.Class.AsQueryable(); if (model != null) { if (!string.IsNullOrEmpty(model.LinkText)) { query = query.Where(a=>a.LinkText.Contains(model.LinkText)); } if (0 != model.LocationID) { query = query.Where(a=>a.LocationID == model.LocationID); } if (null != model.StartDate) { query = query.Where(a=>a.StartDate >= model.StartDate); } if (null != model.EndDate) { query = query.Where(a=>a.EndDate <= model.EndDate); } query = query.Where(a => a.IsDelete == 0); } return query; }