1、LINQ介绍

  LINQ(Language Integrated Query,语言集成查询),是c#编程语言中的一种查询语法。有了LINQ,使得以相同的语法访问不同的数据源成为可能。这是因为,LINQ提供了不同数据源的抽象层。

2、LINQ查询基础

  本节介绍了一个简单的LINQ查询。在此基础上,着重理解:c#提供了转换为方法调用的集成查询语言。

  2.1、准备列表和实体

    接下来的几个章节的LINQ查询是在一个锦标赛的集合上进行的。这个集合需要用到.NET的类库:

      System

      System.Collection.Generic

  2.2、Racer类型。

    Racer定义了几个属性和一个重载的ToString()方法,该方法以字符串格式显示赛车手。实现了IFormattable接口,以支持字符串的不同变体;还实现了IComparable<Racer>接口,它根据Lastname为一组赛车手排序。为了演示更高级的查询,Racer类还定义了多值属性,如Cars和Years。Years属性列出了赛车手获得冠军的年份(车手可以多次获得冠军)。Cars属性列出了赛车手在获得冠军的年份中使用的所有车型:

 1     //这是一个赛车手
 2     public class Racer:IComparable<Racer>,IFormattable
 3     {
 4         public string FirstName { get; }
 5         public string LastName { get; } 
 6         public string Country { get; }  
 7         public int Starts { get; }      
 8         public int Wins { get; }        
 9         public object Years { get; }       //包含车手获得冠军的年份(可以多次获得冠军)
10         public object Cars { get; }       //车手获得冠军年份中使用的车型。参加不同比赛,使用的车型可能不一样
11 
12         public Racer(string firstName,string lastName,string country,int starts,int wins)
13             :this(firstName,lastName,country,starts,wins,null,null){ }
14 
15         public Racer(string firstName, string lastName, string country, int starts, int wins, IEnumerable<int> years, IEnumerable<string> cars)
16         {
17             FirstName = firstName;
18             LastName = lastName;
19             Country = country;
20             Starts = starts;
21             Wins = wins;
22             Years = years;
23             Cars = cars;
24         }
25         public override string ToString() => $"{FirstName} {LastName}";
26 
27         int IComparable<Racer>.CompareTo(Racer other) => FirstName.CompareTo(other?.FirstName);
28 
29         public string ToString(string format) => ToString(format, null);
30 
31         public string ToString(string format, IFormatProvider formatProvider)
32         {
33             switch (format)
34             {
35                 case null:
36                 case "N":
37                     return ToString();
38                 case "F":
39                     return FirstName;
40                 case "L":
41                     return LastName;
42                 case "C":
43                     return Country;
44                 case "S":
45                     return Starts.ToString();
46                 case "W":
47                     return Wins.ToString();
48                 case "A":
49                     return $"姓名:{FirstName} {LastName},国家:{Country}; 开始:{Starts}; 获胜次数:{Wins}";
50                 default:
51                     throw new FormatException($"不支持格式:{format}");
52             }
53         }
54     }
View Code

相关文章:

  • 2021-10-30
  • 2021-09-15
  • 2021-08-02
  • 2021-06-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-03-28
  • 2021-11-08
  • 2021-10-03
相关资源
相似解决方案