📜  linq c# (1)

📅  最后修改于: 2023-12-03 14:43:54.100000             🧑  作者: Mango

LINQ与C#的使用介绍

什么是LINQ?

LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一个组件,它可以将查询语句嵌入到C#或VB.NET等编程语言中,使得查询数据变得非常容易和直观。LINQ主要有3种查询方式,即LINQ to Objects,LINQ to SQL和LINQ to XML,其中最为常用的是LINQ to Objects。

LINQ的优点

使用LINQ的优点如下:

  • 支持强类型查询,编译器可以自动检查类型,避免了很多错误。
  • 使用LINQ可以大大简化代码,使得代码更简洁易懂。
  • LINQ可以避免循环和条件语句的嵌套,提高代码的可读性和可维护性。
  • LINQ可以在查询时进行类型转换和过滤操作,大大增强了数据处理的灵活性。
LINQ的基本语法

以下是一些基本的LINQ语法:

//从数组中查询所有偶数
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 };
var evenNums = from num in nums
               where (num % 2) == 0
               select num;
foreach (var num in evenNums)
{
    Console.WriteLine(num);
}
LINQ查询的三个部分:

LINQ查询通常由三个部分组成,即数据源、查询表达式和查询结果。在上面的例子中,nums数组是数据源,查询表达式由fromwhereselect组成,查询结果由evenNums表示。

LINQ的数据类型

在LINQ中,可以使用各种数据类型进行查询,包括整数、字符串、对象等。

//从字符串数组中查询所有以'a'开头的字符串
string[] fruits = { "apple", "banana", "apricot", "orange" };
var aFruits = from fruit in fruits
              where fruit.StartsWith("a")
              select fruit;
foreach (var fruit in aFruits)
{
    Console.WriteLine(fruit);
}
分组查询

在LINQ中,还可以对查询结果进行分组操作,并使用group by关键字进行分组。

//从对象列表中查询每个人的工资总和,并按照所在城市进行分组
class Person
{
    public string Name { get; set; }
    public string City { get; set; }
    public int Salary { get; set; }
}
List<Person> persons = new List<Person>()
{
    new Person(){Name="Tom", City="Beijing", Salary=3000},
    new Person(){Name="Jack", City="Shanghai", Salary=4000},
    new Person(){Name="Mike", City="Beijing", Salary=2000},
    new Person(){Name="Susan", City="Shanghai", Salary=3500},
};
var sumByCity = from person in persons
                group person by person.City into cityGroup
                select new
                {
                    City = cityGroup.Key,
                    SumSalary = cityGroup.Sum(p => p.Salary)
                };
foreach (var group in sumByCity)
{
    Console.WriteLine($"City:{group.City} SumSalary:{group.SumSalary}");
}
总结

LINQ是.NET框架中非常重要的一个组件,它可以让我们轻松地进行数据查询和处理。LINQ有着非常高的灵活性和可读性,利用LINQ可以将代码编写得更加简洁易懂。熟练使用LINQ可以极大地提高程序员的编程效率。