MVC+EF 多条件查询

根据以前的做法是拼接sql语句,这会增加维护成本,因为sql语句里的内容不会报错,所以在使用ef的时候必须要抛弃拼接sql语句的习惯。

构建实例

 List<vyw_user> list = null;
 IQueryable<vyw_user> result = Ctx.vyw_user;//Ctx表示EF上下文

构建搜索条件

if (!string.IsNullOrEmpty(mobile) || !string.IsNullOrEmpty(usertype) || !string.IsNullOrEmpty(logintimestart) || !string.IsNullOrEmpty(logintimeend)) //搜索情况 假设有四个条件
            {
                #region 搜索情况
                if (mobile.Trim().Length > 0)//手机号码
                {
                    result = result.Where(c => c.mobile.Contains(mobile));
                }
                int usertypeid = Convert.ToInt32(usertype);
                if (usertypeid != -1)//用户类型
                {
                    result = result.Where(c => c.userType == usertypeid);
                }
                if (logintimestart.Trim().Length > 0 && logintimeend.Trim().Length > 0)//搜索查询时间
                {
                    DateTime bstart = Convert.ToDateTime(logintimestart);
                    DateTime bend = Convert.ToDateTime(logintimeend);
                    result = result.Where(c => c.loginTime >= bstart && c.loginTime <= bend);
                }
                #endregion
            }

执行数据查询

 count = result.Where(c => true).Count();//数据的统计
 list = result.Where(c => true).ToList();//数据查询

参数过滤

很多情况下查询到的结果并不能满足我们的需要,还需要进行一些处理,这里需要用linq

var list1 = from d in list
select new
{
userID = d.userID,
mobile = d.mobile,
userType = Enum.GetName(typeof(Enum_userType), d.userType),
fund = d.fund,
certifyName = d.certifyName,
certifyNo = d.certifyNo,
isCertify = Enum.GetName(typeof(Enum_cetifyType), d.isCertify),
certifyTime = d.certifyTime == null ? "" : Convert.ToDateTime(d.certifyTime).ToString("yyyy-MM-dd HH:mm:ss"),
signTime = Convert.ToDateTime(d.signTime).ToString("yyyy-MM-dd HH:mm:ss"),
loginTime = d.loginTime == null ? "" : Convert.ToDateTime(d.loginTime).ToString("yyyy-MM-dd HH:mm:ss")
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值