学习simple.data之进阶篇
一、结果排序
-OrderBy(升序)
-OrderByDescending(降序)
db.Product.All().OrderByFactoryName();
db.Product.All().OrderByFactoryNameDescending();
或
db.Product.All().OrderBy(db.Product.FactoryName);
db.Product.All().OrderByDescending(db.Product.FactoryName);
二、表连接
1 、无外键约束
1.1 自然连接
-Join
-Left Join
-Outer Join
var q = _db.Order.Query()
.Join(_db.OrderDetail, )
.Where(_db.OrderDetail.UnitPrice > );
List<dynamic> employees = q.Select(_db.Order.OrderCode, q.OrderDetail.CategoryName).ToList();
1.2、级联查询
-With
-WithOne
-WithMany
dynamic OrderDetailAlias;
var OrderDetails = db.Order.All()
.With(db.Order.OrderDetail.As("OrderDetailInfo"), out OrderDetailAlias)
.Select( db.Order.OrderCode, BandAlias.Name);
2、外键约束
2.1、单个数据集返回
var orders = _db.Order.FindAllByCustomerId()
.Select(_db.Order.OrderCode, q.Order.OrderDetail.CategoryName);
(利用数据库外键)
var orders = _db.Order.FindAllByCustomerId()
.Select(_db.Order.OrderCode, _db.OrderDetail.CategoryName)
.Join(_db.OrderDetail).On(OrderId: _db.Order.PKID);
(替代外键)
var orders = _db.Order.FindAllByCustomerId()
.Select(_db["Order"]["OrderCode"], _db["OrderDetail"]["CategoryName"])
.Join(_db["OrderDetail"]).On(OrderId: _db["Order"]["PKID"]);
(替代外键-索引写法)
三、聚合函数
1、Having
var orderDetails= db.OrderDetail.All()
.Select(db.OrderDetail.Order.OrderCode,
db.OrderDetail.PKID.Count().As("OrderDetailCount"))
.Having(db.OrderDetail.PKID.Count() > );
2、Max、Min、Sum、Count、Avg
var orderDetails=db.OrderDetail.All().Having(db.OrderDetail.UnitPrice.Max()>);
var orderDetails=db.OrderDetail.All().Having(db.OrderDetail.UnitPrice.Min()>100);
3、Count、CountDistinct
var orderDetails=db.OrderDetail.All().Select(db.OrderDetail.OrderId.Count());
var orderDetails=db.OrderDetail.All().Select(db.OrderDetail.OrderId.CountDistinct());去重数量
四、帮助函数
1、Length(字段长度)
var codeLength=db.Order.Select(db.Order.OrderCode.Length().As("CodeLength"));
2、转换为标量值
2.1、ToScalar、ToScalar<T>从查询结果中返回一个属性作为标量值
int id=db.Order.Get().ToScalar();
int id=db.Order.Select(db.Order.Id).Get().ToScalar();
2.2、ToScalarOrDefault、ToScalarOrDefault<T>从查询结果中返回一个属性作为标量值,这个值作为它的默认值。如果属性值为NULL,ToScalarOrDefault<T>返回default<T>
string orderCode=db.Order.FindAllById().Select(db.Order.OrderCode).ToScalarOrDefault();
2.3、ToScalarList、ToScalarList<T>从一系列查询结果中返回某个列表作为标量值
List<string> orderDetails=db.OrderDetail.FindAllByOrderId().Select(db.OrderDetail.CategoryName).ToScalarList<string>();
2.4、ToScalarArray、ToScalarArray<T>从一系列查询结果中返回某个数组作为标量值
string[] orderDetails=db.OrderDetail.FindAllByOrderId().Select(db.OrderDetail.CategoryName).ToScalarArray<string>();
待续...
学习simple.data之进阶篇的更多相关文章
- 学习simple.data之高级篇
一.调用存储过程 1.不带参数 CREATE PROCEDURE ProcedureWithoutParams AS SELECT * FROM ORDER; 调用db.ProcedureWithou ...
- 学习simple.data之基础篇
simple.data是一个轻量级的.动态的数据访问组件,支持.net4.0. 1.必须条件和依赖性: v4.0 or greater of the .NET framework, or v2.10 ...
- python 学习笔记十三 JQuery(进阶篇)
jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...
- MySQL学习笔记——基础与进阶篇
目录 一.###MySQL登录和退出 二.###MySQL常用命令 三.###MySQL语法规范 四.###基础查询 五.###条件查询 六.###排序查询 七.###常见函数的学习 八.###分组查 ...
- HTML学习(二)进阶篇
在博客园中有许多大神对HTML超文本标记语言写了很多内容,总结了很多知识,这里对我看到的博客文章, 所学到的知识,做一个总结. 一)列表和表格 dl→definition list(定义列表),见备 ...
- python 学习笔记十 rabbitmq(进阶篇)
RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 ...
- PHP学习笔记 - 进阶篇(11)
PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...
- PHP学习笔记 - 进阶篇(7)
PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...
- JavaScript学习笔记 - 进阶篇(1)- JS基础语法
前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...
随机推荐
- (转)c#多线程 Invoke方法的使用
原文地址:http://www.cnblogs.com/lovko/archive/2008/12/19/1358748.html 在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直 ...
- Spark Standalone模式伪分布式环境搭建
前提:安装好jdk1.7,hadoop 安装步骤: 1.安装scala 下载地址:http://www.scala-lang.org/download/ 配置环境变量: export SCALA_HO ...
- WebsitePanel(wsp)配置详解(安装指南)
WebsitePanel(wsp)配置详解(安装指南) 铁卫士原创 估计很多同学都还不知道WebsitePanel是什么东东吧,WebsitePanel简称wsp是微软旗下,开源免费的虚拟主机系统,我 ...
- [ CodeVS冲杯之路 ] P3955
不充钱,你怎么AC? 题目:http://codevs.cn/problem/3955/ 最长上升子序列的加强版,n 有1000000,n 方的 DP 肯定会 TLE,那么用二分栈维护 二分栈我讲不好 ...
- 【SET】ORACLE SET 命令
set colsep' '; //-域输出分隔符 set echo off; //显示start启动的脚本中的每个sql命令,缺省为on set echo on ...
- Messenger 弹窗的使用
关于Messenger 弹窗的文档及详细的说明请参考 Messenger官网,这时只介绍 Messenger 弹窗的使用 messenger依赖与jquery和Backbone.js,可以和 Bo ...
- Android 之 下拉框(Spinner)的使用
下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数 ...
- java基础回顾(一)—— sleep和wait的区别
sleep是Thread类的一个方法,wait是Object类的一个方法 sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源 wait是进入等 ...
- python urllib urllib2
区别 1) urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,用urllib时不可以伪装User Agent字符串等. 2) u ...
- zedboard如何从PL端控制DDR读写(一)
看了一段时间的DDR手册,感觉大体有一点了解了,想要实际上板调试,然而实验室可用的开发板不多,拿了一块zynq板看了看,DDR确实有,但是已经集成了控制器,而且控制器还放到了PS端,PL只能通过AXI ...