基本查询操作符-获取数据

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(&ldquo;传统查询方式&ldquo;);
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(&ldquo;LINQ 查询方式&ldquo;);
foreach (var item in even)
{
Console.WriteLine(item.ToString());
}

}