iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >LINQ高级特性有哪些
  • 938
分享到

LINQ高级特性有哪些

2023-06-17 22:06:47 938人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关LINQ高级特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。LINQ高级特性之动态查询有这样一个场景:应用程序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多

这篇文章将为大家详细讲解有关LINQ高级特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

LINQ高级特性之动态查询

有这样一个场景:应用程序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多个谓词来筛选数据。这种情况在编译时不知道查询的细节,动态查询将十分有用。

在LINQ中,Lambda 表达式是许多标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where、Select、Order By、Take While 以及其他方法)中定义的计算。表达式目录树用于针对数据源的结构化查询,这些数据源实现IQueryable<T>。例如,LINQ to sql 提供程序实现 IQueryable<T>接口,用于查询关系数据存储。C#和Visual Basic编译器会针对此类数据源的查询编译为代码,该代码在运行时将生成一个表达式目录树。然后,查询提供程序可以遍历表达式目录树数据结构,并将其转换为适合于数据源的查询语言。

表达式目录树在LINQ中用于表示分配给类型为Expression<TDelegate>的变量的Lambda表达式。还可用于创建动态LINQ查询。

System.Linq.Expressions 命名空间提供用于手动生成表达式目录树的api。Expression类包含创建特定类型的表达式目录树节点的静态工厂方法,例如,ParameterExpression(表示一个已命名的参数表达式)或 MethodCallExpression(表示一个方法调用)。编译器生成的表达式目录树的根始终在类型 Expression<TDelegate>的节点中,其中TDelegate是包含至多五个输入参数的任何TDelegate委托;也就是说,其根节点是表示一个lambda表达式。

下面几个例子描述如何使用表达式目录树来创建动态LINQ查询。

LINQ高级特性之Select

下面例子说明如何使用表达式树依据 IQueryable 数据源构造一个动态查询,查询出每个顾客的ContactName,并用GetCommand方法获取其生成SQL语句。

  1. //依据IQueryable数据源构造一个查询  

  2. IQueryable<Customer> custs = db.Customers;  

  3. //组建一个表达式树来创建一个参数  

  4. ParameterExpressionparam =Expression.Parameter(typeof(Customer),"c");  

  5. //组建表达式树  

  6. c.ContactNameExpressionselector =Expression.Property(param,typeof(Customer).
    GetProperty("ContactName"));  

  7. ExpressionExpressionpred =Expression.Lambda(selector, param);  

  8. //组建表达式树:Select(c=>c.ContactName)ExpressionExpressionexpr =Expression.Call
    (typeof(Queryable),"Select",newType[] {typeof(Customer),typeof(string) },
    Expression.Constant(custs), pred);  

  9. //使用表达式树来生成动态查询IQueryable<string> query = db.Customers.AsQueryable()  

  10. .Provider.CreateQuery<string>(expr);  

  11. //使用GetCommand方法获取SQL语句   

  12. System.Data.Common.DbCommandcmd = db.GetCommand(query);  

  13. Console.WriteLine(cmd.CommandText); 

关于“LINQ高级特性有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: LINQ高级特性有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • LINQ高级特性有哪些
    这篇文章将为大家详细讲解有关LINQ高级特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。LINQ高级特性之动态查询有这样一个场景:应用程序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多...
    99+
    2023-06-17
  • Java高级特性有哪些
    本篇内容介绍了“Java高级特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1List和SetJUC(java.util.concu...
    99+
    2023-06-19
  • Python高级特性有哪些
    本篇内容介绍了“Python高级特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  切片  可以对list, tuple, stri...
    99+
    2023-06-01
  • MySQL高级特性都有哪些
    今天就跟大家聊聊有关MySQL高级特性都有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。概述闲来无事,看了下高性能mysql这本书,其中的一些M...
    99+
    2024-04-02
  • redis的高级特性有哪些
    这篇文章主要介绍了redis的高级特性有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Redis(Remote Dictionary S...
    99+
    2024-04-02
  • python3函数的高级特性有哪些
    本篇文章给大家分享的是有关python3函数的高级特性有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.requesuts;...
    99+
    2023-06-14
  • Vue.js组件高级特性有哪些用法
    这篇文章主要介绍了Vue.js组件高级特性有哪些用法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:1 递归为组件设置 name属性...
    99+
    2024-04-02
  • python3中函数的高级特性有哪些
    python3中函数的高级特性有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学...
    99+
    2023-06-14
  • CSS3高级属性有哪些
    这篇文章将为大家详细讲解有关CSS3高级属性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 CSS3多列属性有很多,我们一一来介绍一下,包括以下几个属性: 1、...
    99+
    2024-04-02
  • Python的高级特征都有哪些呢
    这篇文章给大家介绍Python的高级特征都有哪些呢,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python 多好用不用多说,大家看看自己用的语言就知道了。但是 Python 隐藏的高级功能你都 get 了吗本文中,作...
    99+
    2023-06-16
  • Python 高级特性
    这章有关Python中被认为高级的特性——就是说并不是每个语言都有的,也是说它们可能在更复杂的程序或库中更有用,但不是说特别特殊或特别复杂。 强调这点很重要:这一章仅仅关于语言自身——关于辅之以Python的标准库功能的特殊语法所支持的特...
    99+
    2023-01-31
    特性 高级 Python
  • Python--高级特性
    高级特性生成器读取生成器元素的两种方式:•g.next()•for循环读取; (生成器实质上是可迭代对象);•列表生成式(列表生成式是Python 内置的非常简单却强大的可以用来创建 list的生成式), 当生成时元素即打印, 会占用内存;...
    99+
    2023-01-31
    特性 高级 Python
  • 美国高性能vps有哪些特点
    1、高性能美国高性能VPS采用高性能服务器,配置高速SSD硬盘和快速网络,可以提供优秀的性能和稳定性。2、可扩展性美国高性能VPS支...
    99+
    2023-05-15
    美国高性能vps 美国vps vps
  • MySQL特性有哪些
    这篇文章主要介绍“MySQL特性有哪些”,在日常操作中,相信很多人在MySQL特性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL特性有哪些”的疑惑有所帮助!接...
    99+
    2024-04-02
  • VB.NET有哪些特性
    这篇文章将为大家详细讲解有关VB.NET有哪些特性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下面以VB2010为例加以说明。首先,在语言中取消连接符这个改动表面看很小,因为basic的开发者都知晓,原...
    99+
    2023-06-17
  • Flexbuilder4特性有哪些
    这篇文章主要介绍Flexbuilder4特性有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flexbuilder4的10个新特性MAX大会上HeidiWilliams用10分钟介绍了FlexBuilder4(G...
    99+
    2023-06-17
  • HASH有哪些特性
    这篇文章主要为大家展示了“HASH有哪些特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HASH有哪些特性”这篇文章吧。哈希满足特性平衡性 :平衡性是指哈希的...
    99+
    2024-04-02
  • Node.js有哪些特性
    这篇文章主要讲解了“Node.js有哪些特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js有哪些特性”吧!为何用Node对于我来说,对于团队来...
    99+
    2024-04-02
  • Django特性有哪些
    这篇文章主要介绍了Django特性有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在正式开始学习Django框架前,我们不妨先来认识一下它的特性。我们可以简单的把特性分为...
    99+
    2023-06-14
  • FlexBuilder有哪些特性
    这篇文章主要为大家展示了“FlexBuilder有哪些特性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“FlexBuilder有哪些特性”这篇文章吧。【FlexBuilder】FlexBuild...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作