广告
返回顶部
首页 > 资讯 > 精选 >LINQ模糊查询怎么使用
  • 221
分享到

LINQ模糊查询怎么使用

2023-06-17 22:06:53 221人浏览 八月长安
摘要

本篇内容主要讲解“LINQ模糊查询怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ模糊查询怎么使用”吧!LINQ模糊查询实现的多条件复合搜索效果如下图:LINQ模糊查询实现阶段一:

本篇内容主要讲解“LINQ模糊查询怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ模糊查询怎么使用”吧!

LINQ模糊查询实现的多条件复合搜索效果如下图:

LINQ模糊查询怎么使用

LINQ模糊查询实现阶段一:

利用Lambda表达式树可以进行动态查询。写了个方法进行复合查询,动态组合条件,生成Lambda表达式。

/// <summary>  /// 这个方法带分页功能,通过输入的键值对NVC进行复合查询  /// </summary>  List<UserT_TractInfo> GetPagedObjectsByNVC(  int startIndex, int pageSize,   NameValueCollection nvc, bool isAnd)  {  IQueryable<UserT_TractInfo> query =   Consulting.Instance.UserT_TractInfo;  query.Where(t => t.IsDel == 0).  Where(t => t.IsAuditing == 1);//审核和逻辑删除   Expression condition = null;  ParameterExpression param = Expression.  Parameter(typeof(UserT_TractInfo), "c");  int propertyCount = 0;  foreach (string key in nvc)  {  Expression right = Expression.Constant(nvc[key]);//键  string keyProperty = key;//属性  if (typeof(UserT_TractInfo).GetProperty(keyProperty) != null)  //当对象存在此属性时(因为键值对可能还有很多其他的参数,例如page)  {    Expression left = Expression.Property(param,  typeof(UserT_TractInfo).GetProperty(keyProperty));//建立属性    Expression filter = Expression.Equal(left, right);//过滤器    if (condition == null)    {  condition = filter;    }    else   {   if (isAnd)   {  condition = Expression.And(condition, filter);   }   else  {  condition = Expression.Or(condition, filter);   }    }    propertyCount++;  }  }  //以上foreach组合了各个有效的键值对对应的conditionExpression,  //复合查询最重要的组合工作就这么完了  if (propertyCount > 0)  {  Expression pred = Expression.Lambda(condition, param);  MethodCallExpression whereCallExpression =   Expression.Call(typeof(Queryable), "Where",   new Type[] { typeof(UserT_TractInfo) },   Expression.Constant(query), pred);   return Consulting.Instance.UserT_TractInfo.AsQueryable().  Provider.CreateQuery<UserT_TractInfo>(whereCallExpression).  OrderByDescending(t => t.ID).Skip(startIndex - 1).  Take(pageSize).ToList();//查询出结果  }  else {  return Consulting.Instance.UserT_TractInfo.  OrderByDescending(t => t.ID).Skip(startIndex - 1).  Take(pageSize).ToList();  //如果没有有效键值对,则返回全部结果  }  }

搞了半天本来很兴奋的,之后才知道Lambda表达式是写不出.Contains()的,我的心瓦凉瓦凉的。

LINQ模糊查询实现阶段二:

虽然李永京的文章没给我多少帮助,但它后面有个回复很有价值:“用微软提供的System.Linq.Dynamic方便点。”很快找到了对应例子和Dynamic.cs,也找到了《Linq to sql Dynamic 动态查询》,有更细致的例子,可惜Dynamic.cs也是不能使用like的,恨啊!

return Consulting.Instance.UserT_TractInfo.Where(  "b_number == @0","P(2007)031").OrderByDescending(t => t.ID).  Skip(startIndex - 1).Take(pageSize).ToList();

代码很容易,但没什么用:(

LINQ模糊查询实现阶段三:

这里放出核心代码,很容易看懂,简单就是美!

searchPredicate = PredicateExtensions.  True<UserT_TractInfo>();  foreach (string key in nvcParam)  {  string condition = string.Empty;  switch (key)  {    case "b_number":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.B_number.Contains(condition));   break;    case "b_address":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.B_address.Contains(condition));   break;    case "b_canton":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.B_canton.Contains(condition));   break;    case "a_status":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.A_status.ToString().Contains(condition));   break;    case "b_area":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.B_area.Contains(condition));   break;    case "c_clinchdate":   condition = nvcParam[key];   searchPredicate = searchPredicate.And(u =>   u.C_clinchdate.Contains(condition));   break;    default:   break;  }  }   return Consulting.Instance.UserT_TractInfo.  Where(searchPredicate).OrderByDescending(t => t.ID).  Skip(startIndex - 1).Take(pageSize).ToList();

下面是我写了注释后的PredicateExtensions,我说不清楚构造函数的True和False具体是怎么起作用的,但结果就是我的注释那样,在复合查询写条件时很重要(不过目前全写AND就完成复合查询了,我还没搞多关键词OR的那种):

/// <summary>  /// 构造函数使用True时:单个AND有效,多个AND有效;  ///单个OR无效,多个OR无效;混合时写在AND后的OR有效  /// 构造函数使用False时:单个AND无效,多个AND无效;  ///单个OR有效,多个OR有效;混合时写在OR后面的AND有效  /// </summary>  public static class PredicateExtensions  {  public static Expression<Func<T,   bool>> True<T>() { return f => true; }   public static Expression<Func<T, bool>> False<T>() {   return f => false; }  public static Expression<Func<T, bool>>   Or<T>(this Expression<Func<T, bool>> expression1,   Expression<Func<T, bool>> expression2)  {  var invokedExpression = Expression.Invoke(  expression2, expression1.Parameters.Cast<Expression>());   return Expression.Lambda<Func<T, bool>>(  Expression.Or(expression1.Body,   invokedExpression),   expression1.Parameters);  }   public static Expression<Func<T, bool>> And<T>(  this Expression<Func<T, bool>> expression1,   Expression<Func<T, bool>> expression2)  {  var invokedExpression =   Expression.Invoke(expression2,   expression1.Parameters.Cast<Expression>());   return Expression.Lambda<Func<T, bool>>  (Expression.And(expression1.Body, invokedExpression),   expression1.Parameters);  }  }

到此,相信大家对“LINQ模糊查询怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: LINQ模糊查询怎么使用

本文链接: https://www.lsjlt.com/news/293577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • LINQ模糊查询怎么使用
    本篇内容主要讲解“LINQ模糊查询怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ模糊查询怎么使用”吧!LINQ模糊查询实现的多条件复合搜索效果如下图:LINQ模糊查询实现阶段一:...
    99+
    2023-06-17
  • LINQ模糊查询怎么理解
    本篇内容主要讲解“LINQ模糊查询怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ模糊查询怎么理解”吧!LINQ模糊查询实现的意义:为了避免即使实现,效率也不是很高,LINQ提供了...
    99+
    2023-06-17
  • LINQ模糊查询实质是什么
    这篇文章主要介绍“LINQ模糊查询实质是什么”,在日常操作中,相信很多人在LINQ模糊查询实质是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LINQ模糊查询实质是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • redis逐渐模糊查询怎么使用
    在Redis中进行模糊查询通常可以使用通配符来实现,常见的通配符有:- `*`:匹配任意多个字符- ``:匹配单个字符下面是使用Re...
    99+
    2023-09-05
    redis
  • Javaweb模糊查询方法怎么使用
    这篇“Javaweb模糊查询方法怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Javaweb模糊查询方法怎么使用”文...
    99+
    2023-06-26
  • mongodb模糊查询方法怎么使用
    在MongoDB中,可以使用正则表达式来进行模糊查询。有两种方式可以实现模糊查询: 使用$regex操作符:$regex操作符可以...
    99+
    2023-10-25
    mongodb
  • Fuse.js模糊查询算法怎么使用
    这篇文章主要介绍“Fuse.js模糊查询算法怎么使用”,在日常操作中,相信很多人在Fuse.js模糊查询算法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Fuse.js模糊查询算法怎么使用”的疑惑有所...
    99+
    2023-07-05
  • mongo中模糊查询怎么用
    这篇文章主要介绍了mongo中模糊查询怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。以下是一个mongo查询的综合应用,即介绍一个生产...
    99+
    2022-10-18
  • LINQ查询怎么使用
    本篇内容主要讲解“LINQ查询怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“LINQ查询怎么使用”吧!LINQ是Visual Studio 2008及其以后版本中提供的功能,将强大的查询...
    99+
    2023-06-17
  • 模糊查询怎么使用mybatis来实现
    模糊查询怎么使用mybatis来实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybat...
    99+
    2023-05-31
    mybatis 模糊查询
  • mybatis模糊查询怎么实现
    MyBatis模糊查询可以通过使用 `%` 或 `_` 来实现。`%` 表示任意多个字符(包括0个字符),`_` 表示任意一个字符。...
    99+
    2023-09-05
    mybatis
  • 使用SQL语句怎么实现模糊查询
    这期内容当中小编将会给大家带来有关使用SQL语句怎么实现模糊查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在main.xml中:<xml version=&qu...
    99+
    2022-10-18
  • mysql中的模糊查询方法怎么使用
    在MySQL中,可以使用LIKE操作符进行模糊查询。1. 使用通配符%:该通配符表示任意字符的任意数量。例如,要查找以 "abc" 开头的所有记录,可以使用以下查询语句:```sqlSELECT * FROM table_nam...
    99+
    2023-08-09
    mysql
  • Linq查询语法怎么使用
    这篇文章主要介绍“Linq查询语法怎么使用”,在日常操作中,相信很多人在Linq查询语法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linq查询语法怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • LINQ查询技术怎么使用
    本篇内容介绍了“LINQ查询技术怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!LINQ TO SQL是LINQ技术在数据库方面的应用...
    99+
    2023-06-17
  • mysql模糊查询like怎么优化
    针对MySQL模糊查询(LIKE)的优化可以采取以下几个方法:1. 索引优化:为模糊查询的字段创建索引,可以大大提高查询性能。对于前...
    99+
    2023-10-11
    mysql
  • SQL的模糊查询怎么实现
    本篇内容介绍了“SQL的模糊查询怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言说到SQL的模糊...
    99+
    2022-10-19
  • js模糊查询算法怎么写
    这篇“js模糊查询算法怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“js模糊查询算法...
    99+
    2022-10-19
  • SQL模糊查询语句怎么写
    这篇文章给大家分享的是有关SQL模糊查询语句怎么写的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL模糊查询语句一般模糊语句语法如下:SELECT 字段&nb...
    99+
    2022-10-18
  • mybatis 使用concat 模糊查询方式
    目录使用concat 模糊查询本举例注意模糊查询使用concat('%',#{str},'%')出错使用concat 模糊查询 <se...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作