Linq中的Select与Select many
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的更多相关文章
- 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 ...
- LINQ 基本子句之一 (select/where/group/into)
特别喜欢同事看到我写了一句小排序的时候说,他当然喜欢Linq了,虽然我只是baidu之,不知其然也不知其所以然. 基本格式 var<变量> = from <项目> in < ...
- 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. ...
- 仅Firefox中A元素包含Select时点击Select不能选择option
这是在使用京东的一个日期组件时碰到的bug,重现bug的代码精简如下 <!DOCTYPE HTML> <html> <head> <title> 仅Fi ...
- sql: sybase与oracle中insert into select和select into的用法
1. sybase与oracle中insert into select和select into的用法 http://wjlvivid.iteye.com/blog/1921679 Sybase 一.首 ...
- oracle 中 insert select 和 select insert 配合使用
Insert Into select 与 Select Into 哪个更快? 在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SEL ...
- iview之——table中嵌套input、select等
使用iview在table中嵌入button是比较常见的需求,但是在table中嵌入input或者select你是否考虑过呢?本文用实例介绍input和select在table中的嵌套. 理解tabl ...
- eclipse javaEE版下载过程中选择镜像(Select Another Mirror)无反应解决办法,附带eclipse javaEE版下载教程。
1.eclipse javaEE版下载过程中选择镜像(Select Another Mirror)无反应 (复制该网址下载即可 https://mirrors.neusoft.edu.cn/eclip ...
- Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数
11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...
随机推荐
- 玩玩微信公众号Java版之七:自定义微信分享
前面已经学会了微信网页授权,现在微信网页的功能也可以开展起来啦! 首先,我们先来学习一下分享,如何在自己的页面获取分享接口及让小伙伴来分享呢? 今天的主人公: 微信 JS-SDK, 对应官方链接为:微 ...
- Gitee(码云)、Github同时配置ssh key
一.cd ~/.ssh 二.通过下面的命令,依次生成两个平台的key $ ssh-keygen -t rsa -C "xxxxxxx@qq.com" -f "github ...
- 鸟哥私房菜--进程SELinux
程序--binary file 进程(PID)--进行中的程序 服务--常驻内存的进程(crond atd 网络...) 父进程 fork()and exec()子进程(PID PPID) ps -l ...
- vue数据更新UI不刷新显示解决方案
vue比较常见的坑就是数据(后台返回)更新了,但是UI界面并没有更新,常见于以下情况: 一.数据为数组时1.通过数组索引修改数组元素例如: 此时UI数据并不会刷新 2.修改数组长度时: 解决方案: 如 ...
- 功能强大的js数组方法:reduce
arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值. reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用 ...
- Calendar and GregorianCalendar
1.GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统 2.注意 (1)月份:1月到12月[0-11] (2)星期:周日到周六[1-7] ...
- hbuilder真机调试时,手机端无法连接电脑测试的处理办法
首先保证手机端与电脑处在同一网段 关闭电脑防火墙 电脑服务端需要配置iis网站,同时在hbuilder的manifest.json 配置与iis网站ip一致的url
- sqlserver使用存储过程跟踪SQL
为跟踪EF生成的SQL /1.添加存储过程/ USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_ ...
- Java核心技术卷一基础知识-第14章-多线程-读书笔记
第 14 章 多线程 本章内容: * 什么是线程 * 中断线程 * 线程状态 * 线程属性 * 同步 * 阻塞队列 * 线程安全的集合 * Collable与Future * 执行器 * 同步器 * ...
- 【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
系列目录 一.安装MySql 二.安装并破解Navicat 三.没有my.in配置文件怎么办 四.设置MySql的大小写敏感 五.重置MySql登陆密码 这一篇可以说是我的踩坑的血泪史了... MyS ...