LINQ to SQL完全指南:Where、Select与Distinct操作

需积分: 9 18 下载量 110 浏览量 更新于2024-09-17 收藏 205KB DOCX 举报
"LINQ_to_SQL语法及实例大全" 在.NET框架中,LINQ(Language Integrated Query,语言集成查询)提供了一种强大而直观的方式来查询数据,而LINQ to SQL是针对关系数据库的一种特定实现。本资源主要介绍了LINQ to SQL的语法和实例,特别是关于Where操作和Select/Distinct的使用。 1. LINQ to SQL的Where操作 Where操作符在LINQ中用于过滤数据,类似于SQL中的WHERE子句。它可以根据指定的条件从数据源中选取满足条件的元素。有三种主要的Where形式: - 简单形式:这涉及到直接基于属性值进行比较。例如,以下代码将选取城市为"London"的所有客户: ```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; ``` - 关系条件形式:这种形式允许你基于多个条件和关系进行筛选。例如,选取库存量低于订货点且未断货的产品: ```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方法来组合多个条件,如选取单价大于10且已停产的产品: ```csharp var q = db.Products.Where(p => p.UnitPrice > 10m).Where(p => p.Discontinued); ``` - First()形式:First()方法返回集合中的第一个元素,这相当于SQL中的TOP(1)。例如,获取表中的第一个发货方: ```csharp Shipper shipper = db.Shippers.First(); ``` 或者根据特定条件选取单一对象,如CustomerID为"BONAP"的客户: ```csharp Customer cust = db.Customers.First(c => c.CustomerID == "BONAP"); ``` 或者选取运费大于10.00的订单: ```csharp Order ord = db.Orders.First(o => o.Freight > 10.00M); ``` 2. LINQ to SQL的Select/Distinct操作 - Select介绍1:Select操作符用于转换查询结果,可以将数据源中的每个元素映射到新的类型。例如,你可以将Customer对象转换为只包含名字和地址的新类型: ```csharp var q = from c in db.Customers select new { Name = c.ContactName, Address = c.Address }; ``` - Select介绍2:除了转换类型,Select还可以用于计算、聚合等操作。例如,选取所有客户的总数量: ```csharp int totalCustomers = db.Customers.Count(); ``` - Select介绍3和Distinct介绍:Distinct操作符用于去除重复的元素。比如,如果你想得到所有不重复的客户城市: ```csharp var cities = db.Customers.Select(c => c.City).Distinct(); ``` 这将返回一个只包含不同城市的列表。 通过这些实例,我们可以看到LINQ to SQL如何简化了与数据库的交互,提供了更直观的查询语法。结合Where和Select/Distinct,开发者可以轻松地构建复杂的数据查询,无需编写大量的SQL代码。