LINQ学习记录

本文介绍了.NET框架中的两个LINQ扩展方法Any()和All(),分别用于检查集合是否存在满足条件的元素和所有元素是否都满足条件。Any()返回true只要有一个元素符合条件,而All()要求所有元素都必须符合条件才返回true。
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

执行结果: 

说明:种子这个参数作为第一个参数参与计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪征程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值