1.Any方法
Any<TSource>(IQueryable<TSource>)
如果源序列包含任何元素,则为 true;否则为 false。
Any<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
如果源序列中存在元素通过了指定谓词中的测试,则为 true;否则为 false。
2.All方法
public static bool All<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true;否则为 false。
3.Zip方法
Zip 投影运算符有多个重载。 所有 Zip 方法都处理两个或更多可能是异构类型的序列。 前两个重载返回元组,具有来自给定序列的相应位置类型
// An int array with 7 elements.
IEnumerable<int> numbers1 = [1, 2, 3, 4, 5, 6, 7];
// A char array with 6 elements.
IEnumerable<char> letters = ['A', 'B', 'C', 'D', 'E', 'F'];
foreach ((int number, char letter) in numbers1.Zip(letters))
{
Console.WriteLine($"Number: {number} zipped with letter: '{letter}'");
}
执行结果:

注意:zip 操作生成的序列的长度永远不会长于最短序列。 numbers 和 letters 集合的长度不同,生成的序列将省略 numbers 集合中的最后一个元素,因为它没有任何要压缩的内容。
// An int array with 7 elements.
IEnumerable<int> numbers1 = [1, 2, 3, 4, 5, 6, 7];
// A char array with 6 elements.
IEnumerable<char> letters = ['A', 'B', 'C', 'D', 'E', 'F'];
// A string array with 8 elements.
IEnumerable<string> emoji = ["🤓", "🔥", "🎉", "👀", "⭐", "💜", "✔", "💯"];
Console.OutputEncoding = Encoding.UTF8;
foreach ((int number, char letter, string em) in numbers1.Zip(letters, emoji))
{
Console.WriteLine(
$"Number: {number} is zipped with letter: '{letter}' and emoji: {em}");
}

4.Aggregate方法
对序列应用累加器函数。 将指定的种子值用作累加器的初始值,并使用指定的函数选择结果值。
#region 测试Aggregate方法
Console.WriteLine(Environment.NewLine);
Console.WriteLine("**************测试Aggregate方法***************");
var result = numbers1.Aggregate((pre, curr) => {
Console.WriteLine($"pre:{pre}");
return pre + curr; });
Console.WriteLine($"无种子聚合结果:{result}");
result = numbers1.Aggregate(10,(pre, curr) => {
Console.WriteLine($"pre:{pre}");
return pre + curr;
});
Console.WriteLine($"种子10聚合结果:{result}");
#endregion
执行结果:

说明:种子这个参数作为第一个参数参与计算
本文介绍了.NET框架中的两个LINQ扩展方法Any()和All(),分别用于检查集合是否存在满足条件的元素和所有元素是否都满足条件。Any()返回true只要有一个元素符合条件,而All()要求所有元素都必须符合条件才返回true。

1万+

被折叠的 条评论
为什么被折叠?



