全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

LINQ查询操作中的类型关系,开始使用

 【来源】本文文字和图纸首要摘自微软官方文书档案。

LINQ(四)- LINQ 查询操作的等级次序涉及,linq类型 开首应用 LINQ(四)- LINQ 查询操作的品类涉及 LINQ 查询操作在数据源、查询本...

     下图演示对数据实行轻巧调换的 LINQ to SQL 查询操作。查询将二个 Customer 对象种类用作输入,并只采取结果中的 Name 属性。因为 Name 是三个字符串,所以查询生成一个字符串类别作为出口。

  5.2 Lambda 表达式

  在前方的示范中,公告该标准发挥式 (num % 2 == 0) 是作为内联参数。Where 方法:Where(num => num % 2 == 0) 此内联表明式称为 lambda 表达式。将代码编写为无名方式或泛型委托或表明式树是一种便利的主意,不然编写起来将要麻烦得多。=> 是 lambda 运算符,可读为“goes to”。运算符侧边的 num 是输入变量,与查询表明式中的 num 相对应。编写翻译器可测度 num 的品种,因为它了然 numbers 是泛型 IEnumerable<T> 类型。lambda 表明式与查询语法中的表明式或其余其余 C# 表明式或语句中的表明式一样;它能够概括方法调用和任何复杂逻辑。“再次来到值”正是表达式结果。  

 

二、基本 LINQ 查询操作

一、介绍 LINQ 查询

  查询是一种从数据源检索数据的表达式。随着岁月的推移,大家已经为各样数据源开辟了不相同的言语;比如,用于关周全据库的 SQL 和用来 XML 的 XQuery。因而,开垦人员不得不针对他们不可能不支持的各类数据源或数量格式而读书新的询问语言。LINQ 通过提供一种跨数据源和多少格式使用数据的同一模型,简化了这一景况。在 LINQ 查询中,始终会用到对象。能够行使同一的编码方式来查询和更改 XML 文书档案、SQL 数据库、ADO.NET 数据集、.NET 集结中的数据以及对其有 LINQ 提供程序可用的其他其余格式的数码。  

二、转变源数据的查询

  下图演示对数码实行轻易调换的 LINQ to SQL 查询操作。查询将二个 Customer 对象系列用作输入,并只选择结果中的 Name 属性。因为 Name 是叁个字符串,所以查询生成一个字符串体系作为出口。  

图片 1

   

  下图演示另一种转移。select 语句重返只捕获原始 Customer 对象的多少个分子的佚名类型。

图片 2

 

     固然您应该明白查询操作中的类型涉及,然而你也能够挑选让编译器为您推行总体干活。关键字 var 可用于查询操作中的任何部分变量。下图与前方评论的第二个示范完全等同。独一的区分是编写翻译器将为查询操作中的各类变量提供强类型:

  3.2 选取各样源成分的子集

  1. 若要只选用源成分的七个成员,请使用点运算。

1     var query = from cust in Customers
2                     select cust.City;

  

  2. 若要创制包蕴源成分的四个特性的要素,能够利用具备命名对象或佚名类型的对象初阶值设定项。

1     var query = from cust in Customer
2                    select new {Name = cust.Name, City = cust.City};

 

走进 LINQ 的世界

  2.3 排序:orderby

  经常能够很有利地将回到的多寡开展排序。orderby 子句将使再次回到的行列中的成分依照被排序的项指标暗许相比较器进行排序。

图片 31 var queryLondonCustomers = from cust in customers 2 where cust.City = "London" 3 orderby cust.Name descending 4 select cust; 按 Name 属性对结果开展排序

  因为 Name 是八个字符串,所以暗中认可比较器施行从 A 到 Z 的字母排序。若要按相反顺序(从 Z 到 A)对结果举办排序,请使用 orderby…descending 子句。

 

三、让编写翻译器估计类型消息

  您也得以选用让编译器为你试行总体行事。关键字 var 可用于查询操作中的任何部分变量。可是,编写翻译器为查询操作中的各类变量提供强类型。  

 图片 4

 

 

 

     下图演示不对数据进行转变的 LINQ to Objects 查询操作。源包涵叁个字符串种类,查询输出也是贰个字符串连串。

四、LINQ 查询操作的种类涉及

  LINQ 查询操作在数据源、查询自身及查询施行中是强类型的。查询中变量的连串必得与数据源桐月素的连串和 foreach 语句中迭代变量的品种包容。强类型能够确认保障在编写翻译时捕获类型错误,以便及时改良。

 

  4.2 转换源数据的查询

  下图演示对数码实行轻巧调换的 LINQ to SQL 查询操作。查询将贰个 Customer 对象连串用作输入,并只选用结果中的 Name 属性。因为 Name 是多个字符串,所以查询生成多个字符串种类作为出口。  

图片 5

  ①数据源的花色参数决定限制变量的系列。

  ②select 语句重回 Name 属性,而非完整的 Customer 对象。因为 Name 是壹个字符串,所以 custNameQuery 的花色参数是 string,而非Customer。  

  ③因为 custNameQuery 是叁个字符串系列,所以 foreach 循环的迭代变量也必须是 string

 

  下图演示另一种转移。select 语句重返只捕获原始 Customer 对象的五个成员的匿名类型。

图片 6

  ①数据源的门类参数始终为查询中的范围变量的项目。

  ②因为 select 语句生成无名类型,所以必需接纳 var 隐式类型化查询变量。

  ③因为查询变量的体系是隐式的,所以 foreach 循环中的迭代变量也必需是隐式的。

 

  1.1 查询操作的七个部分

  操作三部曲:①取多少源 ②创建查询 ③试行查询

图片 7 1 internal class Program 2 { 3 private static void Main(string[] args) 4 { 5 //1.获取数据源 6 var nums = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; 7 8 //2.成立查询 9 var numQuery = 10 from num in nums 11 where (num % 2) == 0 12 select num; 13 14 //3.推行查询 15 foreach (var num in numQuery) 16 { 17 Console.WriteLine("{0}", num); 18 } 19 } 20 } View Code

图片 8

 

   下图彰显了完全的询问操作。在 LINQ 中,查询的实践与查询自己天冠地屦;换句话说,查询本人指的是只创制查询变量,不检索任何数据。

图片 9

  

LINQ:开首使用 LINQ(四)- LINQ 查询操作的门类涉及,linq类型

图片 10

  5.3 查询的组合性

  在上面的代码示例中,请小心 OrderBy 方法是通过在对 Where 的调用中使用点运算符来调用的。Where 生成筛选种类,然后 Orderby 通过对该类别排序来对它实行操作。因为查询会再次来到 IEnumerable,所以您可因此将艺术调用链接在共同,在章程语法中校那几个查询组合起来。那正是在您通过选择查询语法编写查询时编写翻译器在后台所试行的操作。而且由于查询变量不存款和储蓄查询的结果,因而你能够每天修改它或将它用作新查询的底子,即便在实行它后。

 

LINQ 简介

  语言集成查询 (LINQ) 是 Visual Studio 二零零六 和 .NET Framework 3.5 版中引进的一项立异意义。

  古板上,针对数据的询问都以以简要的字符串表示,而尚未编写翻译时类型检查或 速龙liSense 援救。其它,您还非得针对以下种种数据源学习一种分裂的询问语言:SQL 数据库、XML 文书档案、各样 Web 服务等等。 通过LINQ, 您能够运用语言关键字和了解的运算符针对强类型化对象集合编写查询。

图片 11

  

  在 Visual Studio 中,可感觉以下数据源编写 LINQ 查询:SQL Server 数据库、XML 文档、ADO.NET 数据集,以及协理 IEnumerable 或泛型 IEnumerable<T> 接口的大肆对象集合。

  使用要求:项目 ≥ .NET Framework 3.5 。

 

五、LINQ 中的查询语法和措施语法

  在表示语言集成查询 (LINQ) 使用 LINQ 性查询语法,文书档案中的大多查询编写。可是,编写翻译代码时,必得将查询语法转变为艺术,那就需求.NET 公共语言运转时 (CL中华V)。那个艺术调用规范查询运算符的名目类似 WhereSelectGroupByJoinMax和 Average。能够调用这一个格局直接利用方式语法实际不是查询语法。  

  查询语法和方式语立陶宛(Lithuania)语义一样,不过,许六职员发掘查询语法更简短、更便于阅读。有些查询必需代表为艺术调用。举例,必需使用格局调用表示检索成分的数码与钦点的标准的查询。还必需接纳方法须要探求成分的最大值在源体系的询问。System.Linq 命名空间中的标准查询运算符的参照文书档案经常采取办克罗地亚语法。

 

伊始利用 LINQ(四)- LINQ 查询操作的连串涉及

LINQ 查询操作在数据源、查询自己及查询奉行中是强类型的。查询中变量的种类必需与数据源中元素的品类和 foreach 语句中迭代变量的等级次序包容。此强类型有限支撑在编写翻译时捕获类型错误,以便能够在客商境遇那些不当以前改良它们。

 一、不转变源数据的询问

  下图演示不对数据实行调换的 LINQ to Objects 查询操作。源包涵一个字符串体系,查询输出也是贰个字符串系列。 

图片 12

 

  • 不转变源数据的查询

  2.1 获取数据源:from

  在 LINQ 查询中,第一步是点名数据源。像在大大多编制程序语言中一致,必得先申明变量,能力选择它。在 LINQ 查询中,最早使用 from 子句的目标是引进数据源和限制变量。

图片 13图片 14

1     //queryAllCustomers 是 IEnumerable<Cutsomer> 类型
2     //数据源 (customers) 和范围变量 (cust)
3     var queryAllCustomers = from cust in customers
4                                            select cust;

View Code

  范围变量类似于 foreach 循环中的迭代变量,但在查询表明式中,实际上不发生迭代。实行查询时,范围变量将用作对 customers 中的各样后续成分的引用。因为编写翻译器能够猜测 cust 的品类,所以你不用显式内定此类型。

 

五、LINQ 中的查询语法和办德文法

  大家编辑的 LINQ 查询语法,在编写翻译代码时,CLHighlander会将查询语法调换为艺术语法。那一个点子调用规范查询运算符的称呼类似 WhereSelectGroupByJoinMax和 Average,大家也是足以直接行使这几个点子语法的。  

  查询语法和章程语加泰罗尼亚语义一样,不过,许四个人手发掘查询语法更简明、更便于阅读。有个别查询必需代表为艺术调用。举例,必需运用方式调用表示检索成分的多寡与钦命的法则的查询。还必需接纳格局须要探索成分的最大值在源连串的询问。System.Linq 命名空间中的规范查询运算符的参照文书档案平时采纳格局语法。

 

  4.3 让编写翻译器估计类型音讯

  您也能够挑选让编写翻译器为您推行总体办事。关键字 var 可用于查询操作中的任何部分变量。然则,编译器为查询操作中的种种变量提供强类型。  

图片 15

 

  • 让编写翻译器猜度类型新闻

  3.3 将内部存款和储蓄器中的靶子调换为 XML

图片 16图片 17

 1             //创建数据源
 2             var students = new List<Student>()
 3             {
 4                 new Student()
 5                 {
 6                     Age = 18,
 7                     Name = "小A",
 8                     Scores = new List<int>() {88,85,74,66 }
 9                 },
10                 new Student()
11                 {
12                     Age = 35,
13                     Name = "小B",
14                     Scores = new List<int>() {88,85,74,66 }
15                 },
16                 new Student()
17                 {
18                     Age = 28,
19                     Name = "小啥",
20                     Scores = new List<int>() {88,85,74,66 }
21                 }
22             };
23 
24             //创建查询
25             var studentsToXml = new XElement("Root",
26                 from student in students
27                 let x = $"{student.Scores[0]},{student.Scores[1]},{student.Scores[2]},{student.Scores[3]}"
28                 select new XElement("student",
29                 new XElement("Name", student.Name),
30                 new XElement("Age", student.Age),
31                 new XElement("Scores", x))
32             );
33 
34             //执行查询
35             Console.WriteLine(studentsToXml);

View Code

图片 18

 

  1.3 查询

  查询钦命要从数量源中检索的新闻。 查询还能钦命在回到这么些音信以前怎么着对其进行排序、分组和结构化。 查询存款和储蓄在查询变量中,并用查询表明式举行开头化。

  以前的演示中的查询是从整数数组中回到全部的偶数。 该查询表明式富含多少个子句:fromwhere 和 select。(假如您纯熟SQL,您会静心到那几个子句的依次与 SQL 中的顺序相反。)from 子句钦赐数据源,where 子句钦定应用筛选器,select 子句钦命再次回到的成分的品种。 前段时间亟需留神的是,在 LINQ 中,查询变量本人不试行别的操作而且不回去任何数据。 它只是存款和储蓄在未来有个别时刻施行查询时为浮动结果而须要的消息。

 

  3.1 将多个输入联接到一个输出连串

图片 19 1 class Student 2 { 3 public string Name { get; set; } 4 5 public int Age { get; set; } 6 7 public string City { get; set; } 8 9 public List<int> Scores { get; set; } 10 } 11 12 class Teacher 13 { 14 public int Id { get; set; } 15 16 public string Name { get; set; } 17 18 public int Age { get; set; } 19 20 public string City { get; set; } 21 22 } 学生和教育者三个类 图片 20 1 internal class Program 2 { 3 private static void Main(string[] args) 4 { 5 //创造第一个数据源 6 var students = new List<Student>() 7 { 8 new Student() 9 { 10 Age = 23, 11 City = "圣地亚哥", 12 Name = "小C", 13 Scores = new List<int>(){85,88,83,97} 14 }, 15 new Student() 16 { 17 Age = 18, 18 City = "广东", 19 Name = "小明", 20 Scores = new List<int>(){86,78,85,90} 21 }, 22 new Student() 23 { 24 Age = 33, 25 City = "梦中", 26 Name = "小叁", 27 Scores = new List<int>(){86,68,73,97} 28 } 29 }; 30 31 //创立第三个数据源 32 var teachers = new List<Teacher>() 33 { 34 new Teacher() 35 { 36 Age = 35, 37 City = "梦之中", 38 Name = "啵哆" 39 }, 40 new Teacher() 41 { 42 Age = 28, 43 City = "长江", 44 Name = "小红" 45 }, 46 new Teacher() 47 { 48 Age = 38, 49 City = "青海", 50 Name = "丽丽" 51 } 52 }; 53 54 //创造查询 55 var peopleInDreams = (from student in students 56 where student.City == "梦之中" 57 select student.Name) 58 .Concat(from teacher in teachers 59 where teacher.City == "梦之中" 60 select teacher.Name); 61 62 //实行查询 63 foreach (var person in peopleInDreams) 64 { 65 Console.WriteLine(person); 66 } 67 68 Console.Read(); 69 } 70 } 调控台出口代码。

图片 21

 

 

  1.延缓施行

    如前所述,查询变量自己只是存款和储蓄查询命令。  实际的询问试行会延迟到在 foreach 语句中循环访谈查询变量时发生。 此概念称为“延迟施行”。

目录

  • LINQ 简介
  • 介绍 LINQ 查询
  • LINQ 基本查询操作
  • 行使 LINQ 实行数据转变
  • LINQ 查询操作的品种涉及
  • LINQ 中的查询语法和艺术语法

 

  5.2 Lambda 表达式

  在头里的演示中,公告该条件发挥式 (num % 2 == 0) 是作为内联参数。Where 方法:Where(num => num % 2 == 0) 此内联表达式称为 lambda 表明式。将代码编写为佚名格局或泛型委托或表明式树是一种便利的主意,否则编写起来将要麻烦得多。=> 是 lambda 运算符,可读为“goes to”。运算符左边的 num 是输入变量,与查询表达式中的 num 相对应。编写翻译器可预计 num 的花色,因为它掌握 numbers 是泛型 IEnumerable<T> 类型。lambda 表明式与查询语法中的表明式或别的其余 C# 表明式或语句中的表明式一样;它可以归纳方法调用和其他复杂逻辑。“再次来到值”就是表明式结果。  

 

本文由全球彩票平台发布于全球彩票注册平台编程,转载请注明出处:LINQ查询操作中的类型关系,开始使用

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。