`
chungle
  • 浏览: 60004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINQ to SQL语句(18)之运算符转换

阅读更多

运算符转换

1.AsEnumerable:将类型转换为泛型 IEnumerable

使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数。在此示例中,LINQ to SQL(使用默认泛型 Query)会尝试将查询转换为 SQL 并在服务器上执行。但 where 子句引用用户定义的客户端方法 (isValidProduct),此方法无法转换为 SQL。
解决方法是指定 where 的客户端泛型 IEnumerable<T> 实现以替换泛型 IQueryable<T>。可通过调用 AsEnumerable<TSource>运算符来执行此操作。

var q =
    from p in db.Products.AsEnumerable()
    where isValidProduct(p)
    select p;

语句描述:这个例子就是使用AsEnumerable以便使用Where的客户端IEnumerable实现,而不是默认的IQueryable将在服务器上转换为SQL并执行的默认Query<T>实现。这很有必要,因为Where子句引用了用户定义的客户端方法isValidProduct,该方法不能转换为SQL。

2.ToArray:将序列转换为数组

使用 ToArray <TSource>可从序列创建数组。

var q =
    from c in db.Customers
    where c.City == "London"
    select c;
Customer[] qArray = q.ToArray();

语句描述:这个例子使用 ToArray 将查询直接计算为数组。

3.ToList:将序列转换为泛型列表

使用 ToList<TSource>可从序列创建泛型列表。下面的示例使用 ToList<TSource>直接将查询的计算结果放入泛型 List<T>。

var q =
    from e in db.Employees
    where e.HireDate >= new DateTime(1994, 1, 1)
    select e;
List<Employee> qList = q.ToList();

4.ToDictionary:将序列转化为字典

使用Enumerable.ToDictionary<TSource, TKey>方法可以将序列转化为字典。TSource表示source中的元素的类型;TKey表示keySelector返回的键的类型。其返回一个包含键和值的Dictionary<TKey, TValue>。

var q =
    from p in db.Products
    where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
    select p;
Dictionary<int, Product> qDictionary =
    q.ToDictionary(p => p.ProductID);
foreach (int key in qDictionary.Keys)
{
    Console.WriteLine(key);
}

语句描述:这个例子使用 ToDictionary 将查询和键表达式直接键表达式直接计算为 Dictionary<K, T>。

分享到:
评论

相关推荐

    Linq To Sql进阶系列

    - **Linq To Sql集成**:Linq To Sql支持直接调用数据库中的用户自定义函数,无需额外的SQL语句编写,进一步提高了代码的可读性和维护性。 #### 5. Linq To Sql进阶系列(五)StoreProcedure篇 ##### 存储过程与...

    LINQ to SQL语句(15)之String

    以上就是关于“LINQ to SQL语句(15)之String”的详细讲解,涵盖了字符串操作的多个方面,包括基本操作、比较、截取、转换、聚合以及与数据库交互时的注意事项。理解并熟练掌握这些知识点,将有助于提升你在LINQ环境...

    LINQ to SQL语句(14)之Null语义和DateTime

    本文将深入探讨LINQ to SQL中的一个关键主题:Null语义和DateTime处理,这对于任何进行数据库操作的开发人员来说都是至关重要的知识点。 首先,我们来谈谈Null语义。在关系数据库中,NULL值表示未知或未定义的数据...

    C#入门经典(第四版)第27章 LINQ to SQL

    - **提高生产力**:由于减少了编写SQL语句的需求,LINQ to SQL可以显著提高开发效率。 - **减少错误**:使用LINQ to SQL可以减少常见的SQL注入攻击风险,因为所有的查询都通过C#编译器进行类型检查。 - **易于...

    Linq To Sql

    "Linq To Sql" 是 LINQ 技术的具体实现之一,它允许开发者以对象化的形式操作 SQL Server 数据库。开发者可以创建一个 dbml 文件,该文件是一个 XML 文档,描述了数据库的结构和对象之间的映射关系。通过 Linq To ...

    ASP.NET数据库网站设计教程(C#版)[孙士保]第13章 使用LINQ to SQL访问数据库.ppt

    - LINQ提供者:如LINQ to SQL,将查询表达式转化为SQL语句,以便与数据库交互。 - 查询运算符:如`Where()`, `Select()`, `GroupBy()`等,它们是查询的核心,用于过滤、转换和组合数据。 - 数据源:可以是任何类型,...

    LINQ To SQL 语法详解

    ### LINQ To SQL 语法详解 #### 一、概述 **LINQ to SQL** 是 Microsoft .NET Framework 的一部分,提供了一种将 SQL 查询语言的概念引入 C# 的方式,使得开发人员能够更方便地操作数据库。LINQ to SQL 基于 **...

    LINQ语句详解

    ### LINQ语句详解 #### 一、引言 LINQ(Language Integrated Query)是一种集成在.NET Framework 3.5及更高版本中的技术,它提供了一种统一的方式来进行查询操作,无论数据源是内存集合、数据库还是XML文档等。本...

    linq 与sql的对照

    在.NET框架中,Language Integrated Query (LINQ) 是一种强大的数据查询工具,它允许开发者使用一致的、类型安全的查询语法来...在实际开发中,了解如何将SQL语句转化为LINQ查询对于提高开发效率和代码质量至关重要。

    sql语句-linq语言-lambda表达式对照

    ### SQL语句、LINQ及Lambda表达式的对照分析 #### 1. 查询Student表中的所有记录的Sname、Ssex和Class列 **SQL语句**: ```sql SELECT Sname, Ssex, Class FROM Student; ``` 此SQL语句用于从`Student`表中选择所有...

    linq to entitties学习心得(归纳)

    - **转换**:查询中的标准查询运算符和表达式会被转换成命令目录树(Expression Tree)。 - **执行**:这个命令目录树会传递给Entity Framework,由其负责执行实际的SQL查询,并返回数据到客户端。 - **异常处理*...

    LINQ_to_SQL语法及实例大全

    LINQ to SQL 是一种高级查询语法,允许开发者以类似SQL的方式直接在.NET语言中编写查询数据库的代码,而无需编写实际的SQL语句。LINQ to SQL 在.NET 3.5及以后的版本中得到了支持,并且是.NET框架中集成的一部分。...

    linq中文电子书(语言集成查询和LINQ to ADO.NET)

    1. **ADO.NET实体框架**:LINQ to ADO.NET通常与ADO.NET实体框架(Entity Framework)一起使用,该框架提供了一个ORM(对象关系映射)层,使开发人员能够用面向对象的方式操作数据库,而无需关心底层的SQL语句。...

    LINQ_to_SQL语法及实例大全.doc

    LINQ to SQL 语句(1) - Where** `Where`是LINQ中的一个关键操作符,用于过滤数据集合。它基于指定的条件来选择满足条件的元素。 - **简单形式**:`Where`接受一个布尔表达式,返回所有使表达式为真的元素。例如:...

    Wrox - Professional.LINQ.(Jan.2008)[978-0-470-04181-9]

    本章将介绍如何在LINQ to SQL与DataSet之间进行转换,以便更好地利用这两种技术的优点。 **第15章:高级LINQ to SQL主题** 这部分内容涵盖了LINQ to SQL的一些高级话题,如如何处理并发控制、如何处理复杂查询和...

Global site tag (gtag.js) - Google Analytics