C#使用LINQ中Enumerable类方法的延迟与立即执行的控制

2019-12-30 11:42:49王旭

程序运行结果如下:

C#使用LINQ中Enumerable类方法的延迟与立即执行的控制

6.First 返回序列第一个满足条件元素

7.FirstOrDefault 返回序列第一个满足条件元素,如果没有找到则返回默认值

8.Last

9.LastOrDefault

10.Single返回序列中唯一的元素,如果序列中包含多个元素,会引发运行错误!

11.SingleOrDefault 找出序列中满足一定条件的元素,如果序列为空则返回默认值, 如果序列中包含多个多个元素会引发运行错误!!

12.ElementAt 获得指定索引处的元素

13.ElementAtOrDefault 获得指定索引处的元素,如果超出索引,则返回元素类型的默认值


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace First_FirstOrDefault_Last_LastOrDefault_ElementAt_ElementAtOrDefaul
{
  class Program
  {
    static void Main(string[] args)
    {
      //6.First
      string[] names = { "DebugLZQ", "Sarah", "Jerry", "Jeffrey", "M&M" };
      var item = names.First();
      var item2 = names.First(n => n == "Sarah");
      Console.WriteLine("{0},{1}",item,item2 );
      Console.ReadKey();
      //7.FirstOrDefault
      var item3 = names.FirstOrDefault();
      var item4 = names.FirstOrDefault(n => n == "Sarah");
      Console.WriteLine("{0},{1}", item3, item4);
      Console.ReadKey();
      //8.Last
      var item5 = names.Last();
      var item6 = names.LastOrDefault(n => n == "Sarah");
      Console.WriteLine("{0},{1}", item5, item6);
      Console.ReadKey();
      //9LastOrDefault
      var item7 = names.LastOrDefault();
      var item8 = names.LastOrDefault(n => n == "Sarah");
      Console.WriteLine("{0},{1}", item7, item8);
      Console.ReadKey();
      //10.Single返回序列中唯一的元素,如果序列中包含多个元素,会引发运行错误!
      try
      {
        var item9 = names.Single();
      }
      catch(Exception ex)
      {
        Console.WriteLine(ex.Message);
      }
      //
      var item10 = names.Single(n => n == "Sarah");
      Console.WriteLine("{0}",item10 );
      Console.ReadKey();
      //11.SingleOrDefault 找出序列中满足一定条件的元素,如果序列为空则返回默认值, 如果序列中包含多个多个元素会引发运行错误!!
      try
      {
        var item11 = Enumerable.Empty<string>().SingleOrDefault();
        Console.WriteLine("{0}",item11);//不报错,如果序列为空就返回默认值 
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message );
      }
      try
      {
        var item12 = names.SingleOrDefault();
        Console.WriteLine("{0}", item12);//报错,序列包含多行错误
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
      }
      var item13 = Enumerable.Empty<string>().DefaultIfEmpty("DebugLZQ").SingleOrDefault();
      Console.WriteLine("{0}", item13);
      var item14 = names.SingleOrDefault(n => n == "xxx");
      Console.WriteLine("{0}", item14);
      Console.ReadKey();
      //12ElementAt 获得指定索引处的元素
      var item15 = names.ElementAt(3);
      Console.WriteLine("{0}", item15);
      Console.ReadKey();
      //13ElementAtOrDefault 获得指定索引处的元素,如果超出索引,则返回元素类型的默认值
      var item16 = names.ElementAtOrDefault(3);
      var item17 = names.ElementAtOrDefault(100);
      Console.WriteLine("{0},{1}",item16,item17);
      Console.ReadKey();
    }
  }
}