Select与Select Many

之前在项目中查询数据库中的数据,都是通过sql语句来查询的,但是随着时代的发展,微软在.Net Framework 4.5版中推出的一个主要的特性——LINQ。

LINQ是Language Integrate Query的缩写,意为语言集成查询。其中有两种查询方式,分为语句查询和方法查询。

语句查询:from a in Table

select  a ;

方法查询:Table.select(x=>x)

今天要讲的是方法查询中的Select与Select Many。

select:将序列中的每个元素投影到新表中(官方定义)。个人理解:就是查询什么得到什么,比如查询表的所有元素,那么就得到表里的所有元素,不对得到的元素作出修改(Table.select(x=>x))。

select many:将序列的每个元素投影到一个 System.Collections.Generic.IEnumerable`1,并将结果序列组合为一个序列。

参考:https://www.cnblogs.com/zhangyuanbo12358/p/4107882.html 例子1:select

 string[] text = { "Today is 2018-06-06", "weather is sunny", "I am happy" };

             var tokens = text.Select(s => s.Split(' '));
foreach (string[] line in tokens) foreach (string token in line) Console.Write("{0}.", token);
Console.ReadKey();

结果:

select many:

 string[] text1 = { "Today is 2018-06-06", "weather is sunny", "I am happy" };
var tokens1 = text1.SelectMany(s => s.Split(' '));
foreach (string token in tokens1)
Console.Write("{0}.", token);
Console.ReadKey();

结果和上图一样。结论:在select中,首先对字符串“Today is 2018-06-06”按照“ ”进行切割,变成字符串数组{“Today”,“is”," 2018-06-06"},但是select many则是在此基础上,对得到的序列进行重组,即将数组中的元素进行合并,变成字符串“Todayis2018-06-06”,

这就是两者的区别。

当然最重要的还是什么时候用select ,什么时候用select many呢?

如果你是仅仅查询表中的某个列(属性)的,并对其使用聚合函数(sum,count,avg),那么select适合你  StudentTable.select(x=>x.age>=20).count()——查询学生表中年龄大于20的人数

如果你查询表中的某个集合,但是你又想对集合里的对象进行聚合,那么select many适合你 SchoolTable.SelectMany(x => x.StudentCollection).Where(y => y.age >=20).count()——查询学校表里中的学生表中年龄大于20的人数,

X:school类里的StudentCollection属性,该属性类型是集合,集合里存放的是student对象。Y:student对象

以上就是本人对select 与select many的见解,如果有什么不对的地方,欢迎指正,谢谢

Linq中的Select与Select many的更多相关文章

  1. JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join

    JS中Float类型加减乘除 修复   MXS&Vincene  ─╄OvЁ  &0000027─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄Ov ...

  2. LINQ 基本子句之一 (select/where/group/into)

    特别喜欢同事看到我写了一句小排序的时候说,他当然喜欢Linq了,虽然我只是baidu之,不知其然也不知其所以然. 基本格式 var<变量> = from <项目> in < ...

  3. C# LINQ 详解 From Where Select Group Into OrderBy Let Join

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

  4. 仅Firefox中A元素包含Select时点击Select不能选择option

    这是在使用京东的一个日期组件时碰到的bug,重现bug的代码精简如下 <!DOCTYPE HTML> <html> <head> <title> 仅Fi ...

  5. sql: sybase与oracle中insert into select和select into的用法

    1. sybase与oracle中insert into select和select into的用法 http://wjlvivid.iteye.com/blog/1921679 Sybase 一.首 ...

  6. oracle 中 insert select 和 select insert 配合使用

    Insert Into select 与 Select Into 哪个更快? 在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SEL ...

  7. iview之——table中嵌套input、select等

    使用iview在table中嵌入button是比较常见的需求,但是在table中嵌入input或者select你是否考虑过呢?本文用实例介绍input和select在table中的嵌套. 理解tabl ...

  8. eclipse javaEE版下载过程中选择镜像(Select Another Mirror)无反应解决办法,附带eclipse javaEE版下载教程。

    1.eclipse javaEE版下载过程中选择镜像(Select Another Mirror)无反应 (复制该网址下载即可 https://mirrors.neusoft.edu.cn/eclip ...

  9. Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数

    11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...

随机推荐

  1. 2019/3/2周末 java集合学习(一)

    Java集合学习(一) ArraysList ArraysList集合就像C++中的vector容器,它可以不考虑其容器的长度,就像一个大染缸一 样,无穷无尽的丢进去也没问题.Java的数据结构和C有 ...

  2. 【Android开源库】 PagerSlidingTabStrip从头到脚

    简介 PagerSlidingTabStrip,是我个人经常使用到的一个和ViewPager配合的页面指示器,可以满足开发过程中常用的需求,如类似于今日头条的首页新闻内容导航栏等等,之前自己开发的Ju ...

  3. HDU1262-寻找素数对

    //#include<bits/stdc++.h> #include<map> #include<cstdio> #include<string> #i ...

  4. XML学习总结二——DTD

    主要用处是约束XML. 1.DTD分为内部DTD与外部DTD两类: 内部DTD:将DTD定义在XML文档的内部 <!DOCTYPE  根元素名  [    元素描述]> 外部DTD < ...

  5. Postman导出Api文档

    一.最近离职要把做搞过的接口整理成文档,查了查postman好像不支持导出文档,于是写了个工具类,供大家参考! 前提你要先把postman里的接口导出来 如图: 二.所用到的包(主要Json相关的包) ...

  6. Python之旅Day12 HTML与CSS

    前端CSS与HTML部分 <a href="http://www.baidu.com" target="_Blank">百度</a>_B ...

  7. pycharm激活码

    MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiI ...

  8. ASP.NET Core 微服务初探[2]:熔断降级之Polly

    当我们从单体架构迁移到微服务模式时,其中一个比较大的变化就是模块(业务,服务等)间的调用方式.在以前,一个业务流程的执行在一个进程中就完成了,但是在微服务模式下可能会分散到2到10个,甚至更多的机器( ...

  9. 9.代码抽取(adapter)

    1  抽取Adapter 共性的方法 2  把getView方法里 和holder相关的逻辑 摘取到Holder代码中 3  把Holder 相关的代码 抽取到BaseHolder中  4  把ada ...

  10. 项目文件与 SVN 资源库同步提示错误 Attempted to lock an already-locked dir

    问题描述 之前为了图方便,在eclipse中直接把三个jsp文件复制到了eclipse中我新建的一个文件夹中,把svn版本号信息也带过来了,然后我又删除了这三个jsp文件,接着先把这三个jsp复制到桌 ...