C# LINQ
LINQ(Language Integrated Query,语言集成查询)。在C# 语言中集成了查询语法,可以用相同的语法访问不同的数据源。
命名空间System.Linq
下的类Enumerate
中定义了许多LINQ扩展方法,用于可以在实现了IEnumerable<T>
接口的任意集合上使用LINQ查询。
扩展方法
C#扩展方法在静态类中声明,定义为一个静态方法,其中第一个参数定义了它扩展的类型,扩展方法必须对第一个参数使用this
关键字。
public static class StringExtension
{
public static void WriteLine(this string str)
{
Console.WriteLine(str);
}
}
调用方式有两种:
//方式一
"测试".WriteLine();
//方式二
StringExtension.WriteLine("测试二");
采用方式一的方式调用,需要导入该扩展方法所在类的命名空间即可。在使用LINQ时,需要导入System.Linq
命名空间。
示例实体定义
为了更好的说明LINQ的使用, 我们将使用具体的示例进行说明,在该示例中,分别定义如下几个实体:
Racer.cs:该类用来显示赛车手信息
public class Racer : IComparable<Racer>, IFormattable
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Wins { get; set; }
public string Country { get; set; }
public int Starts { get; set; }
public IEnumerable<string> Cars { get; }
public IEnumerable<int> Years { get; }
public Racer(string firstName, string lastName, string country,
int starts, int wins, IEnumerable<int> years, IEnumerable<string> cars)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Country = country;
this.Starts = starts;
this.Wins = wins;
this.Years = years != null ? new List<int>(years) : new List<int>();
this.Cars = cars != null ? new List<string>