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

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

程序的运行结果如下:

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

11.Range 用于生成指定范围内的“整数”序列

12.Repeat用于生成指定数量的重复元素

13.Empty 用于获得一个指定类型的空序列

14.DefaultIfEmpty 用于获得序列,如果为空,则添加一个默认类型元素


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

namespace Range_Empty_DefalultIfEmpty
{
  /// <summary>
  /// DebugLZQ
  /// http://www.easck.com/DebugLZQ
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //11.Range 用于生成指定范围内的“整数”序列
      var num2 = Enumerable.Range(10, 15);

      //12.Repeat用于生成指定数量的重复元素
      var guest = new {Name="橙子",Age=25 };
      var Guests = Enumerable.Repeat(guest, 5);

      //13.Empty 用于获得一个指定类型的空序列
      var empty = Enumerable.Empty<string>();

      //14.DefaultIfEmpty 用于获得序列,如果为空,则添加一个默认类型元素
      //a
      var intempty = Enumerable.Empty<int>();
      Console.WriteLine(intempty.Count());
      Console.WriteLine("-----------");
      foreach (var n in intempty)
      {
        Console.WriteLine(n);      
      }
      Console.WriteLine("-----------");
      Console.WriteLine(intempty.DefaultIfEmpty().Count());
      Console.WriteLine("-----------");
      foreach (var n in intempty.DefaultIfEmpty())
      {
        Console.WriteLine(n);
      }
      Console.WriteLine("--------------------------");
      Console.ReadKey(false);
      //b
      string[] names = { "DebugLZQ", "DebugMan", "Sarah", "Jerry", "Tom", "Linda", "M&M", "Jeffery" };
      var query = from name in names
            where name == "LBJ"
            select name;
      Console.WriteLine(query.Count());
      Console.WriteLine(query.DefaultIfEmpty().Count());//默认为null
      foreach (var n in query.DefaultIfEmpty())
      {
        Console.WriteLine(n);
      }
      Console.WriteLine("---------------");
      Console.ReadKey(false);
      //c指定一个默认值
      foreach (var n in intempty.DefaultIfEmpty(100))
      {
        Console.WriteLine(n);
      }
      Console.WriteLine("--------------------------");
      Console.ReadKey(false);

      foreach (var n in query.DefaultIfEmpty("James"))
      {
        Console.WriteLine(n);
      }
      Console.ReadKey(false);
    }
  }
}