下面的方法测试是可以获得数据的,
现在想传入搜索条件应该怎么写?EF新手。
例如根据id、name、time 多搜索条件搜索,参数id、name、time如何加进查询条件
public ActionResult jsondata() { int page = Request.QueryString["page"] == null ? 1 : int.Parse(Request.QueryString["page"]); int limit = Request.QueryString["limit"] == null ? 5 : int.Parse(Request.QueryString["limit"]); var count = db.Kaoqins.ToList().Count; var datalist = db.Kaoqins.ToList().Skip((page - 1) * limit).Take(limit); var jsonstr = new { count = count, code = 0, msg = "", data = datalist }; return Json(jsonstr, JsonRequestBehavior.AllowGet); }
var datalist=db.Kaoqins.Where(e=>e.id.Equals("参数id")&&e.name.Contains("参数name")).ToList();
嗯 您写的这个我是知道的,
我举个例子吧,条件追加,
stringBuilder str=new stringBuilder();
if(name!="")
str.append("and name=****")
if(time!="")
str.append("and time=****");
这是我的意思
EF如果要使用类似这种情况条件追加应该怎么写?
@大da脸: var datalist=db.Kaoqins.ToList();
首先 datalist是全部的数据,已经拿到缓存中了
然后根据你的参数是否为空进行判断 如下
if(!string.IsNullOrWhiteSpace("你的参数"))
{
datalist = datalist.Where(e=>e.id.Equals("参数id"));
}
@wwr01:
如果有多个条件的判断,这种写法
datalist = datalist.Where(e=>e.id.Equals("参数id"));
能吧所有的条件都拼接上吗?
@大da脸: 你需要通过传进来的参数是否为空进行判断
多个参数 就写多个if 就行了 如下
if(!string.IsNullOrWhiteSpace("参数id"))
{
datalist = datalist.Where(e=>e.id.Equals("参数id"));
}
if(!string.IsNullOrWhiteSpace("参数name"))
{
datalist = datalist.Where(e=>e.name.Equals("参数name"));
}
@wwr01: 非常感谢解答,这样能吧所有的条件都拼接上吗?还是只能有一个条件起作用?
@大da脸: 只要传进来的参数不为空都是可以的
参数不为空 是对datalist筛选,是起作用的
你返回数据 是返回datalist
@wwr01: 好的 终于明白了,这才是最关键的疑问,非常感谢
太麻烦了,filter直接用Odata现成模块吧,省太多无用的人工代码了。
有例子吗?我就是因为不会才问的
db.Kaoqins.ToList()中的tolist已经将所有数据库数据查询到内存中了,如果数据不多也没什么问题
查询条件直接调用where。伪代码where(t=>t.name.Contians(条件)&&t.time>=条件&&t.time<=条件)
嗯 您写的这个我是知道的,
我举个例子吧,条件追加,
stringBuilder str=new stringBuilder();
if(name!="")
str.append("and name=****")
if(time!="")
str.append("and time=****");
这是我的意思
EF如果要使用类似这种情况条件追加应该怎么写?
@大da脸: where(t=>).where(t=>)
@通信的搞程序:
if(name!="") where(t=>***) if(time!="") where(t=>***) 是这样吗?我不懂这个语法所以能不能请您写详细点
因为有这个if参数的判断,不是一次追加完的,当有值的时候才追加
@大da脸:就是这样。