https://msdn.microsoft.com/en-us/library/bb397676(v=vs.100).aspx

Language-Integrated Query (LINQ) is the name for a set of technologies based on the integration of query capabilities能力 directly into the C# language (also in Visual Basic and potentially any other .NET language). With LINQ, a query is now a first-class language construct, just like classes, methods, events and so on.

For a developer who writes queries, the most visible "language-integrated" part of LINQ is the query expression.

Query expressions are written in a declarative陈述的,说明的 query syntax introduced in C# 3.0.

By using query syntax, you can perform even complex filtering, ordering, and grouping operations on data sources with a minimum of code.

You use the same basic query expression patterns to query and transform data in SQL databases, ADO.NET Datasets, XML documents and streams, and .NET collections.

The following example shows the complete query operation.

The complete operation includes creating a data source, defining the query expression, and executing the query in a foreach statement.

                // Specify the data source.
int[] scores = new int[] { , , , }; // Define the query expression.
IEnumerable<int> scoreQuery =
from score in scores
where score >
select score; // Execute the query.
foreach(int i in scoreQuery)
{
Console.Write(i + " ");
}

For more information about the basics of LINQ in C#, see Getting Started with LINQ in C#.

Query Expression Overview

 
  • Query expressions can be used to query and to transform data from any LINQ-enabled data source. For example, a single query can retrieve data from a SQL database, and produce an XML stream as output.

  • Query expressions are easy to master because they use many familiar C# language constructs. For more information, see Getting Started with LINQ in C#.

  • The variables in a query expression are all strongly typed, although in many cases you do not have to provide the type explicitly明确地 because the compiler can infer推断 it. For more information, see Type Relationships in LINQ Query Operations (C#).

  • A query is not executed until you iterate over the query variable in a foreach statement. For more information, see Introduction to LINQ Queries (C#).

  • At compile time, query expressions are converted to Standard Query Operator method calls according to the rules set forth in the C# specification. Any query that can be expressed by using query syntax can also be expressed by using method syntax. However, in most cases query syntax is more readable and concise简洁的. For more information, see C# Language Specification and Standard Query Operators Overview.

  • As a rule when you write LINQ queries, we recommend that you use query syntax whenever possible and method syntax whenever necessary. There is no semantic语义的 or performance difference between the two different forms. Query expressions are often more readable than equivalent expressions written in method syntax.

  • Some query operations, such as Count or Max, have no equivalent query expression clause子句 and must therefore因此 be expressed as a method call. Method syntax can be combined with query syntax in various ways. For more information, see LINQ Query Syntax versus Method Syntax (C#).

  • Query expressions can be compiled to expression trees or to delegates, depending on the type that the query is applied to.IEnumerable<T> queries are compiled to delegates. IQueryable and IQueryable<T> queries are compiled to expression trees. For more information, see Expression Trees (C# and Visual Basic).

The following table lists topics that provide additional information about queries and code examples for common tasks.

Topic

Description

Query Expression Basics (C# Programming Guide)

Introduces fundamental query concepts and provides examples of C# query syntax.

How to: Write LINQ Queries in C#

Provides examples of several basic types of query expressions.

How to: Handle Exceptions in Query Expressions (C# Programming Guide)

How and when to move potential exception-throwing code outside a query expression.

How to: Populate Object Collections from Multiple Sources (LINQ)

How to use the select statement to merge data from different sources into a new type.

How to: Group Query Results (C# Programming Guide)

Shows different ways to use the group clause.

How to: Create a Nested Group (C# Programming Guide)

Shows how to create nested groups.

How to: Perform a Subquery on a Grouping Operation (C# Programming Guide)

Shows how to use a sub-expression in a query as a data source for a new query.

How to: Group Results by Contiguous Keys (C# Programming Guide)

Shows how to implement a thread-safe standard query operator that can perform grouping operations on streaming data sources.

How to: Dynamically Specify Predicate Filters at Runtime (C# Programming Guide)

Shows how to supply an arbitrary number of values to use in equality comparisons in awhere clause.

How to: Store the Results of a Query in Memory (C# Programming Guide)

Illustrates how to materialize and store query results without necessarily using aforeach loop.

How to: Return a Query from a Method (C# Programming Guide)

Shows how to return query variables from methods, and how to pass them to methods as input parameters.

How to: Perform Custom Join Operations (C# Programming Guide)

Shows how to perform join operations based on any kind of predicate function.

How to: Join by Using Composite Keys (C# Programming Guide)

Shows how to join two sources based on more than one matching key.

How to: Order the Results of a Join Clause (C# Programming Guide)

Shows how to order a sequence that is produced by a join operation.

How to: Perform Inner Joins (C# Programming Guide)

Shows how to perform an inner join in LINQ.

How to: Perform Grouped Joins (C# Programming Guide)

Shows how to produce a grouped join in LINQ.

How to: Perform Left Outer Joins (C# Programming Guide)

Shows how to produce a left outer join in LINQ.

How to: Handle Null Values in Query Expressions (C# Programming Guide)

Shows how to handle null

LINQ Query Expressions的更多相关文章

  1. Linq Query常见错误

    1.只能对 Type.IsGenericParameter 为 True 的类型调用方法 对于此错误,一般常见在虚拟实体,但是要把条件拼接在Expression中,通常是因为该字段在数据库中是可空的, ...

  2. LINQ 学习路程 -- 查询语法 LINQ Query Syntax

    1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...

  3. linq query, using int.parse to convert varchar to int while orderby

    var t = from x in context.NewsLetterItem.ToList() //add .ToList at this place where x.APPId == appid ...

  4. Linq to Sharepoint--如何获取Linq Query 生成的CALM

    我们知道Linq to sharepoint 实际最终还是转化成了CALM来对Sharepoint进行访问,那么我们怎样才能知道我们编写的Query语句最终转化成的CALM语句是什么样子呢. 我们可以 ...

  5. LINQ 学习路程 -- 查询操作 Deferred Execution of LINQ Query 延迟执行

    延迟执行是指一个表达式的值延迟获取,知道它的值真正用到. 当你用foreach循环时,表达式才真正的执行. 延迟执行有个最重要的好处:它总是给你最新的数据 实现延迟运行 你可以使用yield关键字实现 ...

  6. 对于Linq关键字和await,async异步关键字的扩展使用

    最近在看neuecc大佬写的一些库:https://neuecc.medium.com/,其中对await,async以及linq一些关键字实现了自定义化使用, 使其不需要引用对应命名空间,不需要多线 ...

  7. SQL Queries from Transactional Plugin Pipeline

    Sometimes the LINQ, Query Expressions or Fetch just doesn't give you the ability to quickly query yo ...

  8. Part 99 Lambda expression in c#

    class Program { static void Main(string[] args) { List<Person> persons = new List<Person> ...

  9. String.Join Method

    Overloads Join(String, String[], Int32, Int32) Concatenates the specified elements of a string array ...

随机推荐

  1. android Activity实现底部滑动弹出窗口及源码下载地址

    在做微信.微博.qq等分享时,一般是点击分享按钮后会从底部弹出滑动窗口,然后选择要分享的社交平台进行分享.今日头条.腾讯新闻等内容App的评论也是从底部滑动弹出输入窗口,进行评论输入的.本篇文章就讲讲 ...

  2. C#——简单工厂

    简单工厂的方法实现过程核心就是之前介绍的接口应用.所以直接上代码: public interface IPerson { void Say(); } public class Student : IP ...

  3. SQLServer 异常捕获,回滚,再抛出

    一个存储过程中多个更新操作,后面的更新操作出现异常,如果不手动回滚前面修改的数据是不会自动撤销的! BEGIN TRY BEGIN TRAN -- ..... COMMIT TRAN END TRY ...

  4. Mysql命令mysql:连接Mysql数据库

    mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 1) 连接到本机上的MYSQL首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p, ...

  5. js 算法排序总结

    1.冒泡排序JavaScript代码实现: function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i ...

  6. redis数据库学习笔记

    redis数据库 工作需要,简单了解一下redis数据库,供后续参考和复习使用. 一.简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字 ...

  7. 总结这几天js的学习内容

    对js中难点的理解 1.把变量对象像遍历数组一样简单 对于数组 ,迭代出来的是数组元素,对于对象 ,迭代出来的是对象的属性: var obj = { w: "wen", j: &q ...

  8. P2080 增进感情

    题目背景 小明和小红的感情,是慢慢发展起来的. 题目描述 他们对对方分别有一个好感值.定义两人的亲密程度为两人的好感值之和. 如果他们的亲密程度达到V,则他们将走到一起.他们以后的生活将取决于两人的好 ...

  9. 使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)

    参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...

  10. 周记之A Fresh Start(2018/9/2-2018/9/8)

    新学期.新开始.新面貌.新姿态.新目标.新动力……希望自己不忘初心,在自己的地图上摸索自己的路,然后一直走下去,永不回头.在此平台立下一个flag:至少每周一记,包括本周内所做所想所感所悟,继而更加坚 ...