返回顶部
首页 > 资讯 > 精选 >linq怎么实现组合
  • 443
分享到

linq怎么实现组合

2023-06-17 21:06:31 443人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关linq怎么实现组合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前被误导,说是linq怎么实现组合捏?因为linq是预编译滴,没有办法想拼一个sql字符串出来,让我纠结很久

这篇文章将为大家详细讲解有关linq怎么实现组合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

之前被误导,说是linq怎么实现组合捏?因为linq是预编译滴,没有办法想拼一个sql字符串出来,让我纠结很久,但是,我觉得微软的人应该比较厉害,所以我本着“有困难要上,没有困难制造困难也要上”的原则,在还没有熟悉LINQ TO ADO.net的情况下,我觉得决定在最近的我自己独立完成小项目里使用asp.net mvc + ADO.NET EF。一般的信息系统都有一个组合查询的功能,我很快用Jquery做了这样一个功能。

这个表单将组合条件提交后台,我先将它封装成条件对象的数组

  1. publicclassCondition  

  2. {  

  3. ///<summary> 

  4. ///字段  

  5. ///</summary> 

  6. publicstringField{get;set;}  

  7. ///<summary> 

  8. ///表达式  

  9. ///</summary> 

  10. publicstrinGoperator{get;set;}  

  11. ///<summary> 

  12. ///值  

  13. ///</summary> 

  14. publicstringValue{get;set;}  

  15. ///<summary> 

  16. ///关系  

  17. ///</summary> 

  18. publicstringRelation{get;set;}  

  19.  

  20. ///<summary> 

  21. ///  

  22. ///</summary> 

  23. ///<paramnameparamname="fileds"></param> 

  24. ///<paramnameparamname="operators"></param> 

  25. ///<paramnameparamname="values"></param> 

  26. ///<paramnameparamname="relations"></param> 

  27. ///<returns></returns> 

  28. publicstaticCondition[]BuildConditions(string[]fileds,
    string[]operators,string[]values,string[]relations)  

  29. {  

  30. if(fileds==null||operators==null||values==null||relations==null)  

  31. {  

  32. returnnull;  

  33. }  

  34. Condition[]conditions=newCondition[fileds.Length];  

  35. try  

  36. {  

  37. for(inti=0;i<conditions.Length;i++)  

  38. {  

  39. conditions[i]=newCondition()  

  40. {  

  41. Field=fileds[i],  

  42. Operator=operators[i],  

  43. Value=values[i],  

  44. Relation=relations[i]  

  45. };  

  46. }  

  47. }  

  48. catch  

  49. {  

  50. returnnull;  

  51. }  

  52. returnconditions;  

  53. }  

实际上,编译器是把Linq表达式编译成expression tree的形式,我只需要将条件对象数组转换为expression tree就可以了。

我先将一个条件转化为一个简单的expression。

privatestaticExpressionConditonToExpression(Conditioncondition,Expressionparameter)  {  Expressionexpr=null;  Typetype=typeof(EDM_Resource);   PropertyInfopi=type.GetProperty(condition.Field);  ExpressionExpressionleft=Expression.Property(parameter,pi);   objectvalue=Convert.ChangeType(condition.Value,pi.PropertyType);  ExpressionExpressionright=Expression.Constant(value);  switch(condition.Operator)  {  case"=":  expr=Expression.Equal(left,right);  break;  case"<":  expr=Expression.LessThan(left,right);  break;  case"<=":  expr=Expression.LessThanOrEqual(left,right);  break;  case">":  expr=Expression.GreaterThan(left,right);  break;  case">=":  expr=Expression.GreaterThanOrEqual(left,right);  break;  }  returnexpr;  }

然后组合,变成一个Linq表达式,追加到where上。

  1. publicIList<EDM_Resource>FindByGroup(EDM_ResGroupresGroup,
    Condition[]conditions,intfirst,intlimit,outintcount)  

  2. {  

  3. using(ShengjingEDM2Entitiescontext=newShengjingEDM2Entities())  

  4. {  

  5. IQueryable<EDM_Resource>result=DoFindByGroup(resGroup,context);  

  6. ParameterExpressionparameter=Expression.Parameter(typeof(EDM_Resource),"r");  

  7. Expressionbody=null;  

  8.  

  9. if(conditions!=null&&conditions.Length>0)  

  10. {  

  11. body=ConditonToExpression(conditions[0],parameter);  

  12. for(inti=1;i<conditions.Length;i++)  

  13. {  

  14. Expressionright=ConditonToExpression(conditions[i],parameter);  

  15. body=conditions[i-1].Relation.ToUpper().Equals("AND")?  

  16. Expression.And(body,right):  

  17. Expression.Or(body,right);  

  18. }  

  19. }  

  20.  

  21. if(body!=null)  

  22. {  

  23. Expression<Func<EDM_Resource,bool>>expr=Expression.
    Lambda<Func<EDM_Resource,bool>>(body,parameter);  

  24. resultresult=result.Where<EDM_Resource>(expr);  

  25. }  

  26. resultresult=result.OrderByDescending<EDM_Resource,int>(r=>r.ResourceID);  

  27. count=result.Count<EDM_Resource>();  

  28. returnresult  

  29. .Skip<EDM_Resource>(first)  

  30. .Take<EDM_Resource>(limit)  

  31. .ToList<EDM_Resource>();  

  32. }  

关于“linq怎么实现组合”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: linq怎么实现组合

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

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

猜你喜欢
  • linq怎么实现组合
    这篇文章将为大家详细讲解有关linq怎么实现组合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前被误导,说是linq怎么实现组合捏?因为linq是预编译滴,没有办法想拼一个sql字符串出来,让我纠结很久...
    99+
    2023-06-17
  • LINQ组合查询怎么简化编程
    本篇内容介绍了“LINQ组合查询怎么简化编程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 初始化数组通常,我们需要把数组的值初始化为相...
    99+
    2023-06-17
  • Linq中怎么自定义组合查询
    本篇文章为大家展示了Linq中怎么自定义组合查询,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这个表单将Linq自定义组合条件提交后台,我先将它封装成条件对象的数组。///  /...
    99+
    2023-06-17
  • Linq怎么实现Left join
    今天就跟大家聊聊有关Linq怎么实现Left join,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在linq中没有 left join,所以当希望用到时,会比较范难。以下是linq...
    99+
    2023-06-17
  • LINQ中怎么利用 from子句实现复合查询
    LINQ中怎么利用 from子句实现复合查询,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。用LINQ from子句进行复核查询using System; &...
    99+
    2023-06-17
  • Linq联合查询表结果集的返回怎么实现
    本篇内容介绍了“Linq联合查询表结果集的返回怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,我们先来了解一些Linq联合查询的...
    99+
    2023-06-17
  • Composite组合模式怎么实现
    本文小编为大家详细介绍“Composite组合模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Composite组合模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • LINQ XML树加载怎么实现
    本篇内容介绍了“LINQ XML树加载怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!LINQ XML树加载通过XElement类,有...
    99+
    2023-06-17
  • linq to sql多表怎么实现
    这篇文章主要讲解了“linq to sql多表怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linq to sql多表怎么实现”吧!在讲述linq to sql多表之前,先看看生成的...
    99+
    2023-06-17
  • LINQ to SQL映射怎么实现
    本篇内容介绍了“LINQ to SQL映射怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!LINQ to SQL映射函数和存储过程LI...
    99+
    2023-06-17
  • linq级联操作怎么实现
    这篇文章主要介绍“linq级联操作怎么实现”,在日常操作中,相信很多人在linq级联操作怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linq级联操作怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • Linq组合查询怎么集成数据库语言查询
    本篇内容主要讲解“Linq组合查询怎么集成数据库语言查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linq组合查询怎么集成数据库语言查询”吧!通常来讲,Linq组合查询提供了一条很常规的途径...
    99+
    2023-06-17
  • java中怎么实现组合模式
    本篇文章给大家分享的是有关java中怎么实现组合模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。组合模式组合模式(Composite Pattern)又叫部分整体模式,是用于...
    99+
    2023-06-20
  • Java的组合模式怎么实现
    本篇内容介绍了“Java的组合模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么是组合模式Compose objects i...
    99+
    2023-07-05
  • Linq结果集形状怎么实现
    这篇文章主要介绍“Linq结果集形状怎么实现”,在日常操作中,相信很多人在Linq结果集形状怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linq结果集形状怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • LINQ中怎么实现动态查询
    今天就跟大家聊聊有关LINQ中怎么实现动态查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。LINQ动态查询实现实例:case 'L': &nbs...
    99+
    2023-06-17
  • LINQ中怎么实现嵌套查询
    这篇文章将为大家详细讲解有关LINQ中怎么实现嵌套查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。LINQ嵌套查询应用实例:如果我们需要取出市场部的所有员工,在以往的O/R Mapping...
    99+
    2023-06-17
  • 怎么实现LINQ to SQL删除行
    这期内容当中小编将会给大家带来有关怎么实现LINQ to SQL删除行,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。可以通过将对应的 LINQ to SQL对象从其与表相关的集合中删除来删除数据库中的行。...
    99+
    2023-06-17
  • linq中怎么实现动态排序
    本篇文章为大家展示了linq中怎么实现动态排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。想实现linq动态排序就是linq的order by 后跟动态的函数可以用委托实现,但是发现实现委托函数时...
    99+
    2023-06-17
  • Linq中怎么实现连接查询
    今天就跟大家聊聊有关Linq中怎么实现连接查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Linq连接查询之前先建立两个查询:using (DataClassesData...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作