Linq的基础2

var 构建匿名类型1 = from c in ctx.GetTable<Customers>()
                          select new
                          {
                              城市 = c.City,
                              名字 = c.Name
                          };

var 构建匿名类型2 = from emp in ctx.GetTable<Customers>()
                          select new
                          {
                              城市 = emp.City,
                              名字 = emp.Name
                          };

var 多条件 = from c in ctx.GetTable<Customers>()
                      where c.Name == "Jay" && c.City == "雷州"
                      select new
                      {
                          名字 = c.City,
                          城市 = c.City
                      };

var 排序 = from c in ctx.GetTable<Customers>()
                     where c.City == "雷州"
                     orderby c.Name descending, c.City ascending
                     select new
                     {
                         名字 = c.Name,
                         城市 = c.City
                     };

//按照每页 10 条记录,查询第二页的顾客
            var 分页 = (from c in ctx.GetTable<Customers>() select c).Skip(10).Take(10);

//根据顾客的国家分组,查询顾客数大于 5 的国家名和顾客数
            var 一般分组 = from c in ctx.GetTable<Customers>()
                       group c by c.City into g
                       where g.Count() > 5
                       orderby g.Count() descending
                       select new
                       {
                           国家=g.Key,
                           顾客数=g.Count()
                       };

//根据国家和城市分组,查询顾客覆盖的国家和城市
            var 匿名类型分组 = from c in ctx.GetTable<Customers>()
                         group c by new { c.City, c.Name } into g
                         orderby g.Key.City, g.Key.Name
                         select new
                         {
                             国家 = g.Key.Name,
                             城市 = g.Key.City
                         };

var 过滤相同项 = (from c in ctx.GetTable<Customers>() orderby c.Name select c.Name).Distinct();

var 连接并且过滤相同项 = (from c in ctx.GetTable<Customers>()
                             where c.City.Contains("A")
                             select c)
                           .Union(from c in ctx.GetTable<Customers>()
                                  where c.Name.StartsWith("A")
                                  select c).OrderBy(c => c.City);

var 连接并且不过滤相同项 = (from c in ctx.GetTable<Customers>()
                              where c.City.Contains("A")
                              select c).Concat
                                (from c in ctx.GetTable<Customers>() where c.City.StartsWith("A") select c)
                                .OrderBy(c => c.City);
            //查询城市是 A 打头的顾客和城市包含 A 的顾客的交集,并按照顾客名字排序
            var 取相交项 = (from c in ctx.GetTable<Customers>()
                        where c.City.Contains("A")
                        select c).Intersect
                          (from c in ctx.GetTable<Customers>()
                           where c.City.StartsWith("A")
                           select c).OrderBy(c => c.City);
            //查询城市包含 A 的顾客并从中删除城市以 A 开头的顾客,并按照顾客名字排序
            var 排除相交项 = (from c in ctx.GetTable<Customers>()
                         where c.City.StartsWith("A")
                         select c).Except
                           (from c in ctx.GetTable<Customers>()
                            where c.Name.StartsWith("A")
                            select c).OrderBy(c => c.Name);
            //查询订单数超过 5 的顾客信息
            var 子查询 = from c in ctx.GetTable<Customers>()
                      where
                 (from o in ctx.GetTable<Customers>()
                  group o by o.CustomerID into o
                  where
                      o.Count() > 5
                  select o.Key).Contains(c.CustomerID)
                      select c;

//查询指定城市中的客户
            var in操作 = from c in ctx.GetTable<Customers>()
                       where new string[] { "B", "A", "C" }.Contains(c.City)
                       select c;

//内连接,没有分类的产品查询不到
            var innerjoin = from p in ctx.GetTable<Customers>()
                            join c in ctx.GetTable<Customers>()
                            on p.CustomerID equals c.CustomerID
                            select p.Name;

//外连接,没有分类的产品也能查询到
            var leftjoin = from p in ctx.GetTable<Customers>()
                           join c in ctx.GetTable<Customers>()
                           on p.City equals c.City
                           into pro
                           from x in pro.DefaultIfEmpty()
                           select p.Name;

var 单结果集存储过程 =
                from c in ctx.sp_singleresultset()
                where c.Name.StartsWith("A")
                select c;

var 多结果集存储过程 = ctx.sp_multiresultset();
            var Customer = 多结果集存储过程.GetResult<Customers>();
            var Employees = 多结果集存储过程.GetResult<Employee>();

时间: 2024-10-08 10:04:23

Linq的基础2的相关文章

C#语法之Linq查询基础二

上篇C#语法之Linq查询基础一基本把Linq介绍了一下,这篇主要是列举下它的几个常见用法. 在用之前先准备些数据,新建了两个类Student.Score,并通过静态方法提供数据. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LinqDemo { public class Student {

LINQ查询基础

一.什么是LINQ LINQ是Language Integrate Query的缩写,意为语言集成查询,是微软在.Net Framework 4.5版中推出的主要特性之一. 它为开发人员提供了统一的数据查询模式,并与.Net开发语言(如C#和VB.Net)集成,很大程度上简化了数据查询的编码和调试工作,提供了数据查询的性能. LINQ中查询表达式访问的是一个对象,而该对象可以表示为各种类型的数据源.比如SQL Server数据库,XML文档,ADO.NET数据集,以及内存中的数据集合等. 在.N

C#语法之Linq查询基础一

Linq做.Net开发的应该都用过,有些地方很复杂的逻辑用Linq很方便的解决.对于Linq to object.Linq to xml.Linq to sql.Linq to Entity(EF)都可以使用linq查询.不知道大家有没有想过为什么linq对这些都可以使用呢?统一的api适用这么多.其实主要还是IEnummerable<T>和IQueryable<T>两个接口.可能有人会问为什么是两个接口?这两个接口有什么区别或者联系呢?这又要引出来Enummerable.Quer

LINQ TO SQL Linq入门基础

我们以一个酒店管理系统的数据库为例子 表结构很简单:GuestInfo(客人信息表),Room(房间表),RoomType(房间类型表),HotelInfo(每个月盈利信息) 整体就是,Room中有个房间类型ID的外键,客人表中有个房间的ID的外键.月盈利信息先不管 准备:新建项目 linq_Ch4控制台程序,新建DB文件夹 右击DB文件夹,添加→新建项 选择LINQ to SQL类,文件名为 Hotel.dbml,添加 打开服务器资源管理器,我的快捷键是Ctrl+W+L 选中这四张表,往已经打

20.C#LINQ基础和简单使用(十一章11.1-11.2)

终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达式转换成一行代码 使用LINQ不意味着你从此不再需要使用SQL LINQ不可能魔法般地让你成为架构天才 序列是LINQ的基础,在你看到一个查询表达式的时候,应该要想到它所涉及的序列:一开始总是存在至少一个序列,且通常在中间过程会转换成其他序列,也可能和其他序列连接在一起. 1 class Car 2

[.net 面向对象编程基础] (20) LINQ使用

[.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integrated Query(语言集成查询)的简称,它是集成在.NET编程语言中的一种特性. 1.LINQ的构架 从这幅图中,我们可以知道LINQ包括五个部分:LINQ to Objects.LINQ to XML.LINQ to SQL.LINQ to DataSet.LINQ to Entities.

2017-6-1 Linq 基础查询 (增删改查)

用小型人员管理系统的项目实战来练习linq的基础增删改查: using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// users 的摘要说明 /// </summary> public partial class users { public string sexstr { get { return Convert.ToBoolean(

LinQ C#3.0

LINQ (Language-Integrated Query,语言集成查询). LINQ to Objects.LINQ to SQL.LINQ to DataSet和LINQ to XML,它们分别查询和处理对象数据(如集合).关系数据(如SQL Server数据库等).DataSet对象数据和XML结构数据.    主要对数据进行操作 ----------------------------------------------------- LINQ 语法基础——C#3.0 -------

LINQ驱动数据的查询功能

一.LINQ概念 LINQ是微软在.NetFramework3.5中新加入的语言功能,在语言中以程序代码方式处理集合的能力. 1.1 LINQ VS 循环处理 在我刚工作时候,对于集合对象的处理一般是采用循环这个集合处理,在处理实值类型上这样做效率还行,但是如果集合内是引用类型,使用LINQ就方便的多,例如一个程序要计算课程的总分和平均分,实体分别是Student和StudentScore 类的申明如下: /// <summary> /// 学生实体 /// </summary>