LINQ重中之重,LINQ(Language-Integrated Query)是C#中的一组技术,用于查询内存中的数据。LINQ to Objects是指使用LINQ查询.NET中的对象集合(如数组、列表等)。
LINQ是一种查询语法,它允许开发者以声明性的方式查询数据,无论这些数据是来自数据库、XML文档还是内存中的集合。
LINQ to Objects指的是对内存中的对象集合(如数组、列表)进行查询。它允许我们使用强类型的方式来查询集合中的数据。
查询表达式是LINQ查询的一种语法,它看起来很像SQL语句。查询表达式通常由from
、where
、select
、orderby
等子句组成。
LINQ查询具有延迟执行的特性,即查询表达式定义了一个查询计划,但直到你迭代访问结果时,查询才真正执行。
where
where
子句用于过滤集合中的元素。
C#namespace AppLinq
{
internal class Program
{
static void Main(string[] args)
{
var numbers = new[] { 1, 2, 3, 4, 5 };
// 从数组中选择偶数
var evenNumbers = from n in numbers
where n % 2 == 0
select n;
foreach (var n in evenNumbers)
{
Console.WriteLine(n);
}
Console.ReadKey();
}
}
}
select
select
子句用于选择集合中的元素或其属性。
C#namespace AppLinq
{
internal class Program
{
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Name = "Rick", Age = 30 },
new Person { Name = "Tom", Age = 25 }
};
var names = from p in people
select p.Name;
foreach (var name in names)
{
Console.WriteLine(name);
}
Console.ReadKey();
}
}
}
orderby
和 orderby descending
orderby
和orderby descending
用于对集合元素进行排序。
C#namespace AppLinq
{
internal class Program
{
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Name = "Rick", Age = 30 },
new Person { Name = "Tom", Age = 25 }
};
var sortedPeople = from p in people
orderby p.Age
select p;
foreach (var p in sortedPeople)
{
Console.WriteLine($"{p.Name} is {p.Age} years old.");
}
Console.ReadKey();
}
}
}
groupby
groupby
用于按照某个键将元素分组。
C#namespace AppLinq
{
internal class Program
{
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Name = "Rick", Age = 30 },
new Person { Name = "Tom", Age = 25 },
new Person { Name = "Jerry", Age = 30 },
new Person { Name = "Mary", Age = 35 },
new Person { Name = "Bob", Age = 30 },
};
var groupedByAge = from p in people
group p by p.Age into ageGroup
select ageGroup;
foreach (var group in groupedByAge)
{
Console.WriteLine($"Age group: {group.Key}");
foreach (var p in group)
{
Console.WriteLine($" - {p.Name}");
}
}
Console.ReadKey();
}
}
}
sum
、average
、min
、max
等聚合操作用于对集合中的元素执行聚合计算。
C#namespace AppLinq
{
internal class Program
{
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
var people = new List<Person>
{
new Person { Name = "Rick", Age = 30 },
new Person { Name = "Tom", Age = 25 },
new Person { Name = "Jerry", Age = 30 },
new Person { Name = "Mary", Age = 35 },
new Person { Name = "Bob", Age = 30 },
};
var totalAge = people.Sum(p => p.Age);
Console.WriteLine($"Total age: {totalAge}");
var averageAge = people.Average(p => p.Age);
Console.WriteLine($"Average age: {averageAge}");
Console.ReadKey();
}
}
}
LINQ to Objects是C#中一个强大的特性,它提供了一种简洁、声明性的方式来查询和操作内存中的数据集合。通过本课程的学习,你应该能够理解LINQ的基本概念,并能够在实际开发中应用LINQ to Objects来简化数据处理任务。练习和探索更多的LINQ操作符将帮助你更深入地掌握这个强大的工具。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!