当前位置: 首页 > news >正文

专业外贸网站建设全网最稳最低价自助下单网站

专业外贸网站建设,全网最稳最低价自助下单网站,企业建立一个网站如何租用域名,咨询微平台什么是LINQ#xff1f; LINQ(语言集成查询)是将查询功能直接集成到C#中。数据查询表示简单的字符串#xff0c;在编译时不会进行类型检查和IntelliSense(代码补全辅助工具)支持。 在开发中#xff0c;通常需要对不同类型的数据源了解不同的查询语句#xff0c;如SQL数据库…什么是LINQ LINQ(语言集成查询)是将查询功能直接集成到C#中。数据查询表示简单的字符串在编译时不会进行类型检查和IntelliSense(代码补全辅助工具)支持。 在开发中通常需要对不同类型的数据源了解不同的查询语句如SQL数据库、XML文档、各种Web服务等。为了使每种类型的查询语句统一通过借助LINQ查询成了最高级的语言构造就像类、方法、事件一样可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。LINQ提供了针对对象、关系数据库、XML的查询技术。 LINQ最明显的语言集成部分是查询表达式查询表达式采用声明性语法编写可以通过最少的代码对数据源进行筛选、排序和分组等操作也可以使用相同的基本查询表达模式来查询和转换SQL数据库、ADO.NET数据集、XML文档和流、.NET集合中的数据。 SQL Server数据库、XML文档和流、ADO.NET数据集、支持IEnumerable或泛型IEnumerableT接口的任何对象集合都可以使用LINQ查询。 例如 //创建数据源 int[] Nums { 86, 89, 95, 93, 79, 86, 99 };//定义查询表达式 IEnumerableint numQuery from num in Numswhere num 80select num; //执行查询 foreach(int num in numQuery) {Console.WriteLine(num{0}, num); }查询表达式概述 查询表达式可用于查询并转换所有启用了LINQ的数据源中的数据。如通过一个查询可以检索数据库中的数据并生成指定的格式如XML流作为输出。 查询表达式容易掌握因为大部分是熟悉的C#语法。 查询表达式中的变量都是强类型在大部分情况下不需要显示提供类型因为编译器可以进行自行推断出。 只有在循环访问查询变量后才会执行查询如foreach语句。 在编译时查询表达式根据C#语法规范转换成标准查询运算符方法调用。在查询中使用的查询语法都可以使用方法语法进行表示。但是查询语法的可读性更好更简洁。 在编写LINQ查询时尽量使用查询语法在必要时使用方法语法。这两种形式在语义或性能上毫无差异使用查询语法比使用方法语法编写的等同表达式具有更好的可读性。 一次查询操作如Count或Max没有等效的查询表达式字句因此必须表示为方法调用可以通过各种方式结合使用方法语法和查询语法。 查询表达式可被编译成表达式树或委托具体应根据查询类型而定。 IEnumerableT查询编译为委托。IQueryable和IQueryableT查询编译为表达式树。 查询表达式 在进行了解之前我们首先要思考的是查询是什么及其作用是什么 查询是一组指令描述要从给定的数据源中检索数据以及返回的数据应具有的形状和组织。查询与它生成的结果不同。 通常情况下源数据按逻辑方式组织为相同类型的元素序列。如SQL数据库表包含行的序列。在XML文件中存在XML元素的序列这些元素在树结构按层次结构进行组织。内存中集合包含的对象序列。 从应用程序的角度来讲原始源数据的特定类型和结构并不重要。应用程序始终将原始数据视为IEnumerableT或IQueryableT集合。如在XML中源数据显示为IEnumerableXElement。 查询表达式必须以from子句开头它指定数据源和范围变量范围变量表示遍历源序列时源序列中的每个连续元素范围变量基于数据源中元素的类型进行强类型化。如下示例所示countries是Country对象的数组所以范围变量的类型为Country又范围变量为强类型可以使用点运算符进行访问成员。 IEnumerableCountry countryAreaQuery from country in countries where country.Area 500000 select country;查询表达式必须以select子句或group子句结尾。 使用select子句可生成所有其它类型的序列简单的select子句只生成类型与数据源中包含的对象相同对象的类型。如下示例中数据源中包含Country对象orderby子句只按新顺序对元素进行排序select子句生成重新排序的Country对象的序列。 IEnumerableCountry sortedQuery from country in countries orderby country.Area select country;select子句可以将源数据转换为新类型的序列此转换称为投影。在如下示例中select子句只包含原始元素中的字段子集的匿名类型序列进行投影。新对象使用对象初始值设定项进行初始化。 var queryNameAndPop from country in countries select new { Name country.Name, Pop country.Population };使用group子句可以生成按指定键组织的组的序列键可以是任意类型的数据。如下示例所示下面的查询会创建包含一个或多个country对象并且其键是char值的组的序列。 var queryCountryGroups from country in countries group country by country.Name[0]; foreach(IEnumerableCountry country in queryCountryGroups ) {foreach(Country_country in country ){Console.WriteLine(City{0}, _country .Name);} }对于此源序列查询可能会执行三种操作之一 1、检索元素的子集以生成新序列而不修改各个元素然后可能以各种方式对返回的序列进行排序或分组。如下所示。 IEnumerableint query from num in Numswhere num 80orderby num descendingselect num;2、如前面的示例所示检索元素的序列但是将它们转换为新类型的对象。如查询可以只从数据源中的某些客户记录检索姓氏或者可以检索完整记录 IEnumerablestring queryStr from num in querywhere num 80orderby num descendingselect string.Format(The number id {0}, num);3、检索有关源数据的单独值如与特定条件匹配的元素数具有最大或最小值的元素与某个条件匹配的第一个元素。如下例子所示 int hightCount (from num in Numswhere num 85select num).Count();在上面的示例中在调用Count方法之前在查询表达式两边使用了括号也可以通过使用新变量存储结果这种写法更具有可读性因为它使存储查询的变量与存储结果的查询分开如下例子所示 IEnumerableint hightQuery from num in Numswhere num 90select num;int hightCounts hightQuery.Count();查询表达式是什么 查询表达式是以查询语法表示的查询。查询表达式由一组类似于SQL或XQuery的声明性语法所编写的字句组成每个字句包含一个或多个C#表达式而这些表达式本身可能是查询表达式或包含查询表达式。 查询表达式必须以from字句开头且必须以select或group字句结尾。在from和select或group之间可以包含以下这些可选子句中的一个或多个where、orderby、join、let甚至是其它from子句。还可以使用into关键字使join或group子句的结果可以充当相同查询表达式中的其它查询表达式的源。 查询变量 在LINQ中查询变量存储查询而不是查询结果的任何变量。查询变量始终是可枚举类型在foreach语句或对其IEnumerator.MoveNext方法的直接调用中循环访问时会生成元素序列。 查询变量可以存储采用查询语法、方法语法或两者的组合进行表示的查询如以下示例中majorCity 和majorCity2都是查询变量。 ListCity cityList new ListCity(){new City{ Population 1000000},new City{Population 100000},new City{Population 10000},new City{Population 540000}};//查询语法IEnumerableCity majorCity from city in cityListwhere city.Population 120000select city;//方法语法IEnumerableCity majorCity2 cityList.Where(a a.Population 120000);另一方面以下示例演示不是查询变量的变量即使各自使用查询进行初始化它们不是查询变量因为它们存储结果。 int highestScore (from score in scores select score) .Max(); // or split the expression IEnumerableint scoreQuery from score in scores select score; int highScore scoreQuery.Max(); // the following returns the same result int highScore scores.Max(); ListCity largeCitiesList (from country in countries from city in country.Cities where city.Population 10000 select city) .ToList(); // or split the expression IEnumerableCity largeCitiesQuery from country in countries from city in country.Cities where city.Population 10000 select city; ListCity largeCitiesList2 largeCitiesQuery.ToList();查询表达式可能会包含多个from子句。在源序列中的每个元素本身就是集合或包含集合时可以使用其它from子句。如下示例所示假设具有County对象的集合每个对象都包含名为Cities的City对象集合若要查询每个County中的City对象请使用两个from子句。 IEnumerableCity cityQuery from country in countries from city in country.Cities where city.Population 10000 select city;使用into进行延续 可以在select或group子句中使用into关键字创建存储查询的临时标识符。如果在group或select操作之后必须对查询执行其它查询操作可以使用into关键字。在如下示例中countries按1000万范围进行分组创建这些分组之后附加子句会筛选出一些组然后按升序对组进行排序若要执行这些附加操作需要由countryGroup表示的延续。 var percentileQuery from country in countries let percentile (int) country.Population / 10000000 group country by percentile into countryGroup where countryGroup.Key 20 orderby countryGroup.Key select countryGroup; // grouping is an IGroupingint, Country foreach (var grouping in percentileQuery) { Console.WriteLine(grouping.Key); foreach (var country in grouping) Console.WriteLine(country.Name : country.Population); }筛选、排序和联接 在开头from子句与结尾select或group子句之间所有其它子句where、join、orderby、from、let都是可选的任何可选子句在查询中可以使用零次或多次。 where子句 使用where子句可基于一个或多个表达式从源数据中筛选出元素。如下示例所示。 IEnumerableCity queryCityPop from city in cities where city.Population 200000 city.Population 100000 select city; orderby子句 使用orderby子句可按升序或降序对结果进行排序还可以指定次要排序顺序。如下示例所示使用Area属性对country对象进行主要排序Population属性进行次要排序。 IEnumerableCountry querySortedCountries from country in countries orderby country.Area, country.Population descending select country;ascending关键字是可选的如果未指定任何顺序则它是默认的排序顺序。 join子句 使用join子句基于每个元素中指定键之间的相等比较将一个数据源中的元素与另一个数据源中的元素进行合并或关联。在LINQ中联接操作是对不同类型的对象序列执行联接两个序列之后必须使用select或group语句指定要存储在输出序列中的元素还可以使用匿名类型将每组关联元素中的属性合并到输出序列中的新类型。如下示例所示关联其Category属性与categories字符串数组中一个类别匹配的prod对象筛选出Category与categories数组中任何匹配的字符串select语句投影其属性取自cat和prod的新类型。 var categoryQuery from cat in categories join prod in products on cat equals prod.Category select new { Category cat, Name prod.Name };还可以使用into关键字将join操作的结果存储到临时变量中来执行分组联接。 let子句 使用let子句可将表达式如方法调用的结果存储到新范围变量中。在如下示例中范围变量f_name存储Split返回的字符串数组中的第一个元素。 string[] str { kdh jsn, lkhs nhdj, sjjkd lsmkcj, shdyfsh sjdnmds };IEnumerablestring queryName from name in strlet f_name name.Split( )[0]select f_name;foreach(string name in queryName){Console.WriteLine(name{0}, name);}查询表达式中的子查询 查询子句本身可能包含查询表达式也称为子查询。每个子查询都是以from子句开头该子句不一定指向第一个from子句中相同的数据源。如下示例中在select语句用于检索分组操作结果的查询表达式。 var groupMax from city in cityListgroup city by city.Population into newCityselect new{Level newCity.Key,maxKey (from cityMax in newCityselect cityMax.Population).Max()};这次就先讲到这里啦下次在讲解LINQ的方法语法热烈欢迎各位广大网友进行批评指正。
http://www.hkea.cn/news/14370718/

相关文章:

  • 公司注册网站模板南昌地宝网租房个人房源
  • 湘潭网站设计祁阳seo
  • 建站最好的四川省建筑人才网
  • 网站开发属于软件开发公司网站 正式上线
  • 有没有做宠物的网站东莞建网站服务
  • 阿里云做网站可以免备案吗网站开发能作为无形资产吗
  • php做网站的支付功能免费网站统计
  • 做英文简历的网站关键词难易度分析
  • 各网站的网络联盟郑州百度网站优化
  • 网站开发方向wordpress设置积分
  • 桥梁建设 网站网站服务器租用售价
  • 做网站还有市场吗泉州seo网站排名
  • 医院网站优化方案wordpress归档页显示文章数量
  • 专做恐怖片的网站wordpress可视化空白
  • 德化县住房和城乡建设局网站番禺区住房和建设局物业网站
  • wordpress站名在哪改用vs2013做网站案例
  • 做网站需要用什么语言公司如何建设网站
  • 建网站可以赚钱吗制作视频模板的软件
  • 付银行的网站建设费的会计科目做房产的一般用哪个网站
  • 智慧团建官方网站电脑版银川哪家网站建设专业
  • 免费网站建设培训庆元建设局网站
  • 怎么查看网站是否被百度惩罚降权或者被k网站的充值是怎么做的
  • 衡水网站设计费用赣州人才网招聘找工作
  • 免费网站设计工具抖音营销推广怎么做
  • 苏州网站建设找苏州聚尚网络推荐flash 3d 网站源码
  • 网站有哪些区别做网站一定要数据库吗
  • 网站建设资源分享朔州推广型网站建设
  • 企业建站系统开源任务网站(做任务学技能的)
  • 生鲜电商网站建设与管理微信引流用什么软件好用
  • 电子商务网站建设影响因素seo网站排名优化软件是什么