C# Linq基础
基本查询操作符-获取数据
Select()
public static IEnumerable<TResult> Select<TSource, TResult> (
this IEnumerable<TSource> source,
Func<TSource, TResult> selector )
说明Select
方法本身是一个泛型扩展方法
它作用于IEnumerable<TSource>
类型
它只接受一个 Func<TSource, TResult>
类型参数Func<TSource, TResult>
是一个泛型委托,位于System
名字空间下,System.Core.dll
中
在这里 selector
是一个提取器
基本查询操作符-过滤数据
Where()
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate )
说明
Where方法也是一个泛型扩展方法
它和 Select()
一样作用于IEnumerable<TSource>
类型
它只接受一个 Func<TSource, bool>
泛型委托参数
在这里 predicate
是一个判断条件
基本查询操作符-排序数据
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector )
说明OrderBy
方法也是一个泛型扩展方法
它和 Select()
一样作用于IEnumerable<TSource>类型
它只接受一个 Func<TSource, TKey >
类型参数
在这里 keySelector 指定要排序的字段
如果想降序排列可以使用OrderByDescending
方法
示例代码如下
/// <summary>
/// 传统查询方式
/// </summary>
private void WithoutLinq()
{
int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
List<int> even = new List<int>();
foreach (int number in numbers)
{
if (number % 2 == 0)
{
even.Add(number);
}
}
even.Sort();
even.Reverse();
Console.WriteLine(“传统查询方式“);
foreach (int number in even)
{
Console.WriteLine(number.ToString());
}
}
/// <summary>
/// LINQ 查询方式
/// </summary>
private void WithLinq()
{
int[] numbers = new int[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
var even = numbers
.Where(p => p % 2 == 0)
.Select(p => p)
.OrderByDescending(p => p);
Console.WriteLine(“LINQ 查询方式“);
foreach (var item in even)
{
Console.WriteLine(item.ToString());
}
}