• C#中Linq AsEnumeralbe、DefaultEmpty和Empty的使用


    Linq是Language Integrated Query的简称,它是微软在.NET Framework 3.5里面新加入的特性,用以简化查询查询操作。以下主要介绍C#中Linq的AsEnumeralbe、DefaultEmpty和Empty操作符。

    1、AsEnumeralbe操作符

    AsEnumerable操作符可以将一个类型为IEnumerable的输入序列转换成一个IEnumerable的输出序列,其主要用于将一个实现了IEnumerable接口的对象转换成一个标准的IEnumerable接口对象。在Linq中、不同领域的Linq实现都有自己专属的操作符。

    IQueryable通常是Linq to SQL的返回类型,当我们直接在上面调用Where方法时,调用的是Linq to sql的扩展方法,因此有时候我们需要转换为标准的IEnumerable才能调用Linq to OBJECT的扩展方法。

    2、DefaultEmpty操作符

    DefaultEmpty操作符可以用来为一个空的输入序列生成一个对应的含有默认元素的新序列。引用类型为null,值类型为相应的默认值。有些标准操作符在一个空的序列上调用时会抛出一个异常,而DefaultEmpty恰恰可以解决这个问题。

    例如,

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. namespace ConsoleApplication
    7. {
    8. class Program
    9. {
    10. static void Main(string[] args)
    11. {
    12. List<string> ListInt = new List<string>();
    13. ListInt.Add("C");
    14. ListInt.Add("Java");
    15. ListInt.Add("Python");
    16. string str = ListInt.Where(s => s.StartsWith("JavaScript")).DefaultIfEmpty().First();
    17. Console.WriteLine("str="+str); //输出空白
    18. //使用string str1 = ListInt.Where(s => s.StartsWith("JavaScript")).First(); 如去掉DefaultEmpty就会报异常
    19. Console.ReadKey();
    20. }
    21. }
    22. }

    3、Empty操作符

    Empty操作符用于生成一个包含指定类型元素的空序列。

    例如,

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. namespace ConsoleApplication
    7. {
    8. class Program
    9. {
    10. static void Main(string[] args)
    11. {
    12. IEnumerable<int> ints = Enumerable.Empty<int>();
    13. Console.WriteLine(ints.Count()); //输出0
    14. Console.ReadKey();
    15. }
    16. }
    17. }

  • 相关阅读:
    算法——动态规划
    狂神springcloud速补笔记4
    V4L2 Camera 开发
    antd树型表格的逐级展开折叠(每次展开都只展开到当前未展开的最小层级,每次折叠都只折叠到当前未折叠的最大层级)
    BUG记录:springMVC引入vue报错---not defined
    大话手游原始服务端搭建教程Centos
    关于椭球的一点形象的解说
    Hugging Face 开发环境 全教程
    自动化部署static资源到cos-bucket
    设计模式:模板模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
  • 原文地址:https://blog.csdn.net/lwf3115841/article/details/134387066