赞
踩
这些方法允许我们以声明式的方式处理集合数据。下面是 Enumerable
类中的一些常见方法及其用途:
方法 | 描述 | 类别 |
---|---|---|
All | 测试序列中的所有元素是否满足指定的条件。 | 查询方法 |
Any | 检查序列是否包含任何元素,或者满足指定条件的元素。 | 查询方法 |
Average | 计算序列中所有元素的平均值。 | 数值聚合 |
Concat | 连接两个序列。 | 操作方法 |
Contains | 检查序列中是否包含某个元素。 | 查询方法 |
Count | 返回序列中元素的数量。 | 查询方法 |
Distinct | 返回序列中不同的元素。 | 操作方法 |
ElementAt | 返回序列中指定位置的元素。 | 查询方法 |
Except | 返回第一个序列中不在第二个序列中的元素。 | 操作方法 |
First | 返回序列的第一个元素。 | 查询方法 |
FirstOrDefault | 返回序列的第一个元素,如果没有则返回默认值。 | 查询方法 |
GroupBy | 将序列分割成多个组。 | 分组方法 |
GroupJoin | 对两个序列进行连接,并按组返回结果。 | 分组方法 |
Intersect | 返回两个序列中共有的元素。 | 操作方法 |
Join | 将两个序列根据共同的属性连接起来。 | 操作方法 |
Last | 返回序列的最后一个元素。 | 查询方法 |
LastOrDefault | 返回序列的最后一个元素,如果没有则返回默认值。 | 查询方法 |
Max | 返回序列中的最大值。 | 数值聚合 |
Min | 返回序列中的最小值。 | 数值聚合 |
OfType | 过滤序列中指定类型的元素。 | 查询方法 |
Reverse | 反转序列中的元素。 | 操作方法 |
Select | 将序列中的元素映射到新的形式。 | 转换方法 |
SelectMany | 将序列中的元素映射到新的序列,并将它们合并成一个序列。 | 转换方法 |
SequenceEqual | 比较两个序列是否相等。 | 查询方法 |
Single | 返回序列中唯一的元素。 | 查询方法 |
SingleOrDefault | 返回序列中唯一的元素,如果没有则返回默认值。 | |
Skip | 跳过序列中的前N个元素。 | 操作方法 |
Sum | 计算序列中所有元素的总和。 | 数值聚合 |
Take | 获取序列中的前N个元素。 | 操作方法 |
ToArray | 将序列转换成数组。 | 转换方法 |
ToList | 将序列转换成列表。 | 转换方法 |
ToLookup | 将序列转换成查找字典。 | 转换方法 |
Where | 根据条件筛选序列中的元素。 | 查询方法 |
接下来,挑选一些常用的方法进行分类和介绍:
Where
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);
**功能**:过滤序列中的元素。
示例:
var filtered = numbers.Where(n => n > 0); // 大于0的元素
All
public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
功能:检查序列中的所有元素是否满足指定条件。
示例:检查一个数字序列是否全部大于零。
bool allPositive = numbers.All(num => num > 0);
Any
public static bool Any<TSource>(this IEnumerable<TSource> source);
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
功能:检查序列中是否有任何一个元素满足指定条件。
示例:检查一个序列是否包含任何负数。
bool hasNegative = numbers.Any(num => num < 0);
Contains
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource>? comparer);
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value);
用途:检查序列中是否包含某个特定的元素。
示例:检查序列中是否包含某个数字。
bool containsFive = numbers.Contains(5);
Count
public static int Count<TSource>(this IEnumerable<TSource> source);
public static int Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
功能:返回序列中元素的数量。
示例:获取序列中的元素总数。
int count = numbers.Count();
First
public static TSource First<TSource>(this IEnumerable<TSource> source);
public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
功能:返回序列的第一个元素。
示例:获取序列中的第一个数字。
int firstNumber = numbers.First();
Average
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func); public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func); public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static float Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static float? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static decimal? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static float? Average(this IEnumerable<float?> source); public static double? Average(this IEnumerable<long?> source); public static double? Average(this IEnumerable<int?> source); public static double? Average(this IEnumerable<double?> source); public static decimal? Average(this IEnumerable<decimal?> source); public static double Average(this IEnumerable<long> source); public static double Average(this IEnumerable<int> source); public static double Average(this IEnumerable<double> source); public static decimal Average(this IEnumerable<decimal> source); public static float Average(this IEnumerable<float> source);
功能:计算序列中所有元素的平均值。
示例:计算一组数字的平均值。
double average = numbers.Average();
public static long Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector); public static decimal Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static double Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static int Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static decimal? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static TSource? Max<TSource>(this IEnumerable<TSource> source, IComparer<TSource>? comparer); public static int? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static long? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static float? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static TResult? Max<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector); public static double? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static TSource? Max<TSource>(this IEnumerable<TSource> source); public static float Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static float Max(this IEnumerable<float> source); public static float? Max(this IEnumerable<float?> source); public static long? Max(this IEnumerable<long?> source); public static int? Max(this IEnumerable<int?> source); public static double? Max(this IEnumerable<double?> source); public static decimal? Max(this IEnumerable<decimal?> source); public static long Max(this IEnumerable<long> source); public static int Max(this IEnumerable<int> source); public static double Max(this IEnumerable<double> source); public static decimal Max(this IEnumerable<decimal> source);
功能:获取序列中的最大值。
示例:
int max = numbers.Max(); // 获取最大值
public static decimal Min(this IEnumerable<decimal> source); public static TResult? Min<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector); public static float Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static float? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static int? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static double? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static decimal? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static long Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector); public static int Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static decimal Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static TSource? Min<TSource>(this IEnumerable<TSource> source, IComparer<TSource>? comparer); public static TSource? Min<TSource>(this IEnumerable<TSource> source); public static long? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static double Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static float Min(this IEnumerable<float> source); public static float? Min(this IEnumerable<float?> source); public static long? Min(this IEnumerable<long?> source); public static int? Min(this IEnumerable<int?> source); public static double? Min(this IEnumerable<double?> source); public static decimal? Min(this IEnumerable<decimal?> source); public static double Min(this IEnumerable<double> source); public static long Min(this IEnumerable<long> source); public static int Min(this IEnumerable<int> source);
功能:获取序列中的最小值。
示例:
int min = numbers.Min(); // 获取最小值
public static int Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static long Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector); public static decimal? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static long? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static int? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static double Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static float? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static float Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static double? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static decimal Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static long? Sum(this IEnumerable<long?> source); public static float? Sum(this IEnumerable<float?> source); public static int? Sum(this IEnumerable<int?> source); public static double? Sum(this IEnumerable<double?> source); public static decimal? Sum(this IEnumerable<decimal?> source); public static long Sum(this IEnumerable<long> source); public static int Sum(this IEnumerable<int> source); public static double Sum(this IEnumerable<double> source); public static decimal Sum(this IEnumerable<decimal> source); public static float Sum(this IEnumerable<float> source);
功能:计算序列中所有元素的总和。
示例:
int total = numbers.Sum(); // 计算总和
Distinct
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source);
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource>? comparer);
功能:返回序列中不同的元素。
示例:去除重复的数字。
IEnumerable<int> unique = numbers.Distinct();
public static IEnumerable<TSource> Reverse<TSource>(this IEnumerable<TSource> source);
功能:反转序列中的元素顺序。
示例:
IEnumerable<int> reversed = numbers.Reverse(); // 反转序列
GroupBy
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IEnumerable<TElement>, TResult> resultSelector, IEqualityComparer<TKey>? comparer);
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IEnumerable<TElement>, TResult> resultSelector);
public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector, IEqualityComparer<TKey>? comparer);
public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector);
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey>? comparer);
public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey>? comparer);
功能:根据指定的键将序列分割成多个组。
示例:根据长度将字符串分组。
var groups = strings.GroupBy(s => s.Length);
public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source);
功能:将序列(集合或者数组)转换成数组。
示例:
int[] array = numbers.ToArray(); // 转换成数组
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);
功能:将序列(集合或者数组)转换成列表。
示例:
List<int> list = numbers.ToList(); // 转换成列表
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, int, TResult> selector);
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
功能:投影每个元素到新的形式。
示例:
var squaredNumbers = numbers.Select(n => n * n); // 将每个元素平方
其他方法
public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);
功能:跳过序列中的前N个元素。
示例:跳过前两个元素
var skipped = numbers.Skip(2); // 跳过前两个元素
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, Range range);
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
功能:获取序列中的前N个元素。
示例:获取前三个元素
var taken = numbers.Take(3); // 获取前三个元素
这些方法提供了强大的数据处理能力,可以根据需要灵活运用。在实际开发中,经常会将这些方法组合起来使用,以达到复杂的数据查询和处理需求。后续会对这些方法结合实例进行详细讲解和应用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。