LINQ to SQL:Where与Select操作详解

需积分: 9 3 下载量 197 浏览量 更新于2024-07-23 收藏 69KB DOCX 举报
"LINQ to SQL 是一种用于.NET Framework的数据查询技术,它允许开发人员使用C#或VB.NET语言直接对数据库进行操作。本学习笔记主要介绍了LINQ to SQL中的基本查询操作,包括Where操作和Select/Distinct操作符。" 在LINQ(Language Integrated Query,语言集成查询)中,`linq to sql`是一种特定于SQL Server的实现,它提供了一种直接在.NET代码中编写SQL查询的方法,使得数据操作更加直观和简洁。 ### Where操作 Where操作在LINQ中用于过滤数据,类似于SQL中的WHERE子句。它接受一个布尔表达式作为参数,根据这个表达式来决定哪些元素应包含在结果集中。 1. 简单形式: 这是最基础的用法,例如,要查询所有位于伦敦的客户: ```csharp var q = from c in db.Customers where c.City == "London" select c; ``` 或者,查找1994年或之后雇用的雇员: ```csharp var q = from e in db.Employees where e.HireDate >= new DateTime(1994, 1, 1) select e; ``` 2. 关系条件形式: 这种形式允许基于多个字段的关系条件进行筛选。比如,找出库存量低于订货点且未断货的产品: ```csharp var q = from p in db.Products where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued select p; ``` 或者,选择价格高于10或者已停产的产品: ```csharp var q = from p in db.Products where p.UnitPrice > 10m || p.Discontinued select p; ``` 使用两次`Where`可以组合更复杂的条件,例如: ```csharp var q = db.Products.Where(p => p.UnitPrice > 10m).Where(p => p.Discontinued); ``` 3. First()形式: `First()`方法返回满足条件的第一个元素,等同于SQL的`TOP 1`。例如: - 获取表中的第一个发货方: ```csharp var shipper = db.Shippers.First(); ``` - 查找CustomerID为“BONAP”的单个客户: ```csharp var cust = db.Customers.First(c => c.CustomerID == "BONAP"); ``` - 返回运费大于10.00的首个订单: ```csharp var ord = db.Orders.First(o => o.Freight > 10.00M); ``` ### Select/Distinct操作符 `Select`操作符在LINQ中用于指定查询的结果集,它通常位于查询表达式的末尾,将查询到的源对象转换为目标类型。例如,如果你想要获取客户的名字而非完整的客户对象,可以这样做: ```csharp var names = from c in db.Customers select c.Name; ``` `Distinct`操作符则用于去除结果集中的重复项,确保每个元素只出现一次: ```csharp var uniqueNames = from c in db.Customers select c.Name into names Distinct(); ``` 这将返回所有不重复的客户名称。 通过这些基本操作,开发者可以构建出复杂的查询来处理数据库中的数据,同时保持代码的可读性和简洁性。`linq to sql`使得.NET开发者无需深入SQL语法,就能高效地进行数据库交互。
2017-09-16 上传
LINQ to SQL语句(1)之Where 2 Where操作 2 1.简单形式: 2 2.关系条件形式: 2 3.First()形式: 3 LINQ to SQL语句(2)之Select/Distinct 3 1.简单用法: 4 2.匿名类型 形式: 4 3.条件形式: 5 4.指定类 型形式: 6 5.筛选形式: 6 6.shaped形式(整形类型): 6 7.嵌套类型形式: 7 8.本地方法调用 形式(LocalMethodCall): 7 9.Distinct形式: 8 LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg 9 1.简单形式: 9 2.带条件形 式: 9 1.简单形式: 10 2.映射形式: 10 3.元素 : 11 1.简单形式: 11 2.映射形式: 11 3.元素: 11 1.简单形式: 12 2.映射形式: 12 3.元素: 12 LINQ to SQL语句(4)之Join 13 Join操作符 13 1.一对多关系(1 to Many): 13 2.多对多关系(Many to Many): 14 3.自联接关系: 15 1.双向联接(Two way join): 15 2.三向联接(There way join): 16 3.左外部联接(Left Outer Join): 17 4.投影的Let赋值(Projected let assignment): 17 5.组合键(Composite Key): 18 6.可为null/不可为null的键关系 (Nullable/Nonnullable Key Relationship): 19 LINQ to SQL语句(5)之Order By 19 Order By操作 19 1.简单形式 19 2.带条件形式 20 3.降序排序 20 4.ThenBy 20 5.ThenByDescending 22 6. 带GroupBy形式 22 LINQ to SQL语句(6)之Group By/Having 23 Group By/Having操作符 23 1.简单形式: 23 2.Select匿名类 : 24 3.最大 值 25 4.最小 值 26 5.平均 值 26 6.求和 26 7.计数 27 8.带条件计数 27 9.Where限制 28 10.多列(Multiple Columns) 28 11.表达式(Expression) 29 LINQ to SQL语句(7)之Exists/In/Any/All/Contains 29 Exists/In/Any/All/Contains操作符 29 Any 29 1.简单形式: 29 2.带条件形式: 30 All 30 Contains 31 1.包含一个对象: 31 2.包含多个值: 32 LINQ to SQL语句(8)之Concat/Union/Intersect/Except 32 Concat/Union/Intersect/Except操作 32 Concat(连接) 32 1.简单形式: 33 2.复 合形式: 33 Union(合并) 33 Intersect(相交) 34 Except(与非) 34 LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods 35 Top/Bottom操作 35 Take 35 Skip 35 TakeWhile 36 SkipWhile 36 Paging(分页)操作 36 1.索引 36 2.按唯一键排序 36 SqlMethods操作 37 Like 37 已编译查 询操作(Compiled Query) 38 LINQ to SQL语句(10)之Insert 38 插入(Insert)1.简单形式 38 2.一对多 关系 39 3.多对多关系 39 4.使用动态CUD重写(Override using Dynamic CUD) 40 LINQ to SQL语句(11)之Update 41 更新(Update) 41 1.简单形式 41 2.多项更改 41 LINQ to SQL语句(12)之Delete和使用Attach 42 删除(Delete)1.简单形式 42 2.一对多关系 42 3.推理删除(Inferred Delete) 43 使用Attach更新(Update with Attach) 43 LINQ to SQL语句(13)之开放式并发控制和事务 46 Simultaneous Changes开放式并发控制 46 开放式并发(Optimistic Concurrency) 46 1.Implicit(隐式) 48 2.Explicit(显式) 48 LINQ to SQL语句(14)之Null语义和DateTime 49 Null语义 49 1.Null 49 2.Nullable<T>.HasValue 50 日期函数 50 1.DateTime.Year 51 2.DateTime.Month 51 3.DateTime.Day 51 LINQ to SQL语句(15)之String 51 字符串(String) 51 1.字符 串串联(String Concatenation) 52 2.String.Length 52 3.String.Contains(substring) 52 4.String.IndexOf(substring) 52 5.String.StartsWith (prefix) 53 6.String.EndsWith(suffix) 53 7.String.Substring(start) 53 8.String.Substring (start, length) 53 9.String.ToUpper() 54 10.String.ToLower() 54 11.String.Trim() 54 12.String.Insert(pos, str) 54 13.String.Remove(start) 55 14.String.Remove(start, length) 55 15.String.Replace(find, replace) 55 LINQ to SQL语句(16)之对象标识 56 对象标识 56 对象缓存 56 LINQ to SQL语句(17)之对象加载 57 对象加载延迟加载 57 预先加载:LoadWith 方法 58 LINQ to SQL语句(18)之运算符转换 59 1.AsEnumerable:将类型转换为泛型 IEnumerable 59 2.ToArray:将序列转换为数组 59 3.ToList:将序列转换为 泛型列表 59 4.ToDictionary:将序 列转化为字典 60 LINQ to SQL语句(19)之ADO.NET与LINQ to SQL 60 1.连接 61 2.事务 61 LINQ to SQL语句(20)之存储过程 63 1.标量返回 63 2.单一结 果集 64 3.多个可 能形状的单一结果集 65 4.多个结果集 70 5.带输出参数 79 LINQ to SQL语句(21)之用户定义函数 80 1.在Select中使用用户定义的标量函数 80 2.在Where从句中 使用用户定义的标量函数 81 3.使用用户定义的表值函数 83 4.以联接方式使用用户定义的表值函数 84 LINQ to SQL语句(22)之DataContext 85 创建和删除数据库 85 数据库验证 88 数据库更改 88 动态查询 89 日志 90 LINQ to SQL语句(23)之动态查询 90 1.Select 91 2.Where 92 LINQ to SQL语句(24)之视图 94 LINQ to SQL语句(25)之继承 96 1.一般形式 97 2.OfType形式 98 3.IS形式 98 4.AS形式 99 5.Cast形式 99 6.UseAsDefault形式 100 7.插入新的记录 101