经典linq模板语句
1.简单形式:
var q = from c in db.Customers where c.City == "London" select c; 使用where筛选在伦敦的客户
var q = from e in db.Employees where e.HireDate >= new DateTime(1994, 1, 1) select e; 筛选1994 年或之后雇用的雇员:
2.关系条件形式:
var q =
from p in db.Products
where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
select p; 筛选库存量在订货点水平之下但未断货的产品
var q =from p in db.Productswhere p.UnitPrice > 10m || p.Discontinuedselect p;筛选出UnitPrice 大于10 或已停产的产品:
var q =db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);
调用两次where以筛选出UnitPrice大于10且已停产的产品。
3.Frist形式
Shipper shipper = db.Shippers.First();
选择表中的第一个发货方。
Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
选择CustomerID 为“BONAP”的单个客户
Order ord = db.Orders.First(o => o.Freight > 10.00M);
选择运费大于 10.00 的订单
Select/Distinct操作符
1.简单用法:
var q =from c in db.Customersselect c.ContactName;
这个示例返回仅含客户联系人姓名的序列。
2.匿名类型形式:
var q =from c in db.Customersselect new {c.ContactName, c.Phone};
上面语句描述:使用 SELECT 和匿名类型返回仅含客户联系人姓名和电话号码的序列
var q =from e in db.Employeesselect new{Name = e.FirstName + " " + e.LastName,Phone = e.HomePhone};
上面语句描述:使用SELECT和匿名类型返回仅含雇员姓名和电话号码的序列,并将FirstName和LastName字段合并为一个字段“Name”,此外在所得的序列中将HomePhone字段重命名为Phone。
var q =
from p in db.Products select new { p.ProductID, HalfPrice = p.UnitPrice / 2 };
上面语句描述:使用SELECT和匿名类型返回所有产品的ID以及HalfPrice(设置为产品单价除以2所得的值)的序列。
3.条件形式:
说明:生成SQL语句为:case when condition then else。
var q =from p in db.Productsselect new{p.ProductName,Availability =p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock" : "In Stock"};
上面语句描述:使用SELECT和条件语句返回产品名称和产品供货状态的序列。
4.指定类型形式:
说明:该形式返回你自定义类型的对象集。
var q =from e in db.Employeesselect new Name{FirstName = e.FirstName,LastName = e.LastName};
上面语句描述:使用SELECT和已知类型返回雇员姓名的序列。
5.筛选形式:
说明:结合where使用,起到过滤作用。
var q =from c in db.Customerswhere c.City == "London"select c.ContactName;
上面语句描述:使用SELECT和WHERE返回仅含伦敦客户联系人姓名的序列。
6.shaped形式(整形类型):
说明:其select操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象。
var q =from c in db.Customersselect new {c.CustomerID,CompanyInfo = new {c.CompanyName, c.City, c.Country},ContactInfo = new {c.ContactName, c.ContactTitle}};
语句描述:使用SELECT 和匿名类型返回有关客户的数据的整形子集。查询顾客的ID和公司信息(公司名称,城市,国家)以及联系信息(联系人和职位)。
7.嵌套类型形式:
说明:返回的对象集中的每个对象DiscountedProducts属性中,又包含一个集合。也就是每个对象也是一个集合类。
var q =from o in db.Ordersselect new {o.OrderID,DiscountedProducts =from od in o.OrderDetailswhere od.Discount > 0.0select od,FreeShippingDiscount = o.Freight};
语句描述:使用嵌套查询返回所有订单及其OrderID 的序列、打折订单中项目的子序列以及免送货所省下的金额。
8.本地方法调用形式(LocalMethodCall):
这个例子在查询中调用本地方法PhoneNumberConverter将电话号码转换为国际格式。
var q = from c in db.Customerswhere c.Country == "UK" || c.Country == "USA"select new{c.CustomerID,c.CompanyName,Phone = c.Phone,InternationalPhone = PhoneNumberConverter(c.Country, c.Phone)};
PhoneNumberConverter方法如下:
public string PhoneNumberConverter(string Country, string Phone) {Phone = Phone.Replace(" ", "").Replace(")", ")-");switch (Country){case "USA":return "1-" + Phone;case "UK":return "44-" + Phone;default:return Phone;} }
下面也是使用了这个方法将电话号码转换为国际格式并创建XDocument
XDocument doc = new XDocument(new XElement("Customers", from c in db.Customerswhere c.Country == "UK" || c.Country == "USA"select (new XElement("Customer",new XAttribute("CustomerID", c.CustomerID),new XAttribute("CompanyName", c.CompanyName),new XAttribute("InterationalPhone", PhoneNumberConverter(c.Country, c.Phone))))));
9.Distinct形式:
说明:筛选字段中不相同的值。用于查询不重复的结果集。生成SQL语句为:SELECT DISTINCT [City] FROM [Customers]
var q = (from c in db.Customersselect c.City ).Distinct();
语句描述:查询顾客覆盖的国家。
转载于:https://www.cnblogs.com/dubing/articles/2087381.html
经典linq模板语句相关推荐
- 2019CAD设置经典模式模板详细步骤
2019CAD设置经典模式步骤 第一步:下载经典模式模板 链接:https://pan.baidu.com/s/1Wyt0SQxqOG1nETg55rHq-w 提取码:lpxq 第二步:安装 1 2打 ...
- 浙江大学计算机学院各专业介绍ppt模板,浙大硕士论文答辩经典ppt模板(几乎涵盖各种ppt制作技巧).ppt...
浙大硕士论文答辩经典ppt模板(几乎涵盖各种ppt制作技巧).ppt 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...
- 文化娱乐免费的经典PPT模板哪里可以下载?经典大气PPT模板大全
想要做出一份高质量的PPT,必要的四个要素是要有的,专业.逻辑.框架和视觉.我们往往在做PPT时候都会去借助PPT模板,不同风格的PPT模板适用不同场合,在使用模板原本配色就是最稳定安全的,那么怎么做 ...
- SQL经典50查询语句案例_4(4、查询姓“李”的老师的个数)
SQL经典50查询语句案例_4: 4.查询姓"李"的老师的个数: SELECT COUNT(Tname) FROM teacher WHERE Tname LIKE '李%' 在M ...
- matlab双循环语句,经典MATLAB循环语句.doc
经典MATLAB循环语句 ? ? 不用 for, if,直接 length(find(diff(a) == 1)) 就可以了 如果非要用for, if s = 0; for n = 1:length( ...
- linq查询语句转mongodb
&& (与操作) 子表达式可以通过&&合并来查询满足所有子表达式的文档 var query =from c in collection.AsQueryable<C ...
- 经典SQL操作语句【转载】
1.经典SQL语句大全(绝对的经典) 2. 3. 4.一.基础 1.1.说明:创建数据库 2.CREATE DATABASE database-name 3.2.说明:删除数据库 4.drop dat ...
- 经典SQL Server语句大全(超详细)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- 经典常用SQL语句大全(绝对的经典)
一.基础 1.1.说明:创建数据库 2.CREATE DATABASE database-name 3.2.说明:删除数据库 4.drop database dbname 5. ...
最新文章
- 【译】使用Kotlin和RxJava测试MVP架构的完整示例 - 第1部分
- SAP MM初阶之事务代码MIGO界面批次拆分最多输入15行?
- 最大医学影像平台将首个实现把医疗AI引入实际应用
- 如何在迭代时从列表中删除项目?
- CSS3实现页面的平滑过渡
- 运行脚本时用SPOOL保存运行结果的问题
- Ubuntu设置root登录
- studio 快捷键
- s3c6410 uboot代码分析《二》
- android8.0电脑壁纸,Android用原生分享多张图片适配7.0、8.0
- 苹果:失了 5G 会何妨?
- Mysql之运算的使用
- 【老生谈算法】matlab实现K均值聚类算法——K均值聚类算法
- 水经注CAD智能影像加载插件教程
- sap 双计量单位_SAP基本计量单位
- win10系统hp笔记本开机黑屏一段时间解决方法
- 微分中值定理之柯西中值定理
- delphi每次mysql密码BDE_关于DELPHI中BDE连接不上ORACLE数据库的問題
- webp文件怎么打开?webp压缩工具推荐
- 100个数据分析常用指标和术语
热门文章
- 改变Keil5所有窗口的背景颜色
- 度小满获南京银行三年100亿元授信额度,双方并合作共同发力消费金融
- 01-02 | 设计模式之美——王争
- idea破解 2018.2.3
- 计算机前端总线频率,前端总线(FSB)频率AMD平台系列
- php获取条码秤称重后的数据,称重过磅数据可导出电脑表格显示以便财务统计的智能电子秤...
- 顶尖学校计算机硕士毕业,计算机科学专业顶尖院校
- matlab demux,demux(demux用法)
- Python爬取B站历史观看记录并用Bokeh做数据可视化
- 第三章 需求挖掘与分析,电子商务与大数据