zoukankan      html  css  js  c++  java
  • Linq 中 Select 与SelectMany的区别

    以前一直都是直接用也没有系统的学习一下,最近出去面试受挫很多,也让自己下定目标补充更多的理论知识。以前一直以为 Select 和 SelectMany 没啥太多区别。

    今天看Linq 实战发现还是有一些区别的。

    如果我们看这两个扩展函数的定义很容易明白——

    Select是把要遍历的集合IEnumerable逐一遍历,每次返回一个T,合并之后直接返回一个IEnumerable,

    SelectMany则把原有的集合IEnumerable每个元素遍历一遍,每次返回一个IEnumerable,把这些IEnumerable的“T”合并之后整体返回一个IEnumerable。

    于是我们写代码可能就有了这样的差别:

    var tmp=books.Select(book => book.Authors);
    foreach(var authors in tmp)
    {
      foreach(var author in authors)
      {
         Console.WriteLine(author.LastName);  
      }
    }
    var tmp1=books.SelectMany(book => book.Authors);
    foreach(var authors in tmp1)
    {
      Console.WriteLine(author.LastName);  
    }
    

    使用Select运算符返回的是一个由数据源对象数组组成的序列,而SelectMany 是吧这些数组拆分开来组成一个序列并返回。

    每天进步一点点,每个人的敌人只有自己,努力超越自己才是人生终极目标。
  • 相关阅读:
    @font-face
    闭包
    DOM事件
    DOM属性
    使用谷歌chrome浏览器查看任何标签的固有属性
    chmod命令
    C++笔记之零碎点
    C++学习之 —— 输入输出
    常见素数筛选方法原理和Python实现
    Django的MVT模型
  • 原文地址:https://www.cnblogs.com/davezhao/p/4586705.html
Copyright © 2011-2022 走看看