摘要:LINQ在本地查询IEnumerbale主要是用委托来作为传参,而解析型查询IQueryable则用Expression来作为传参: public static IEnumerable<T> Where<T>(this IEnumerable<T> enumable, Func<T, bool> f
阅读全文
随笔分类 - LINQ
摘要:在C#语言中,对集合的条件查询、分组统计等操作使用LINQ非常方便,LINQ的语法格式与SQL非常相似和便捷,而LINQ扩展方法配合Lambda更为简洁,如All、Any、Count、Max等Enumerable类扩展方法,其中Distinct、Intersect、Contains等大量方法中使用了
阅读全文
摘要:一、准备工作 1、建表 先创建两个表Group、User,两表的关系是N:N CREATE TABLE [dbo].[Group]( [Id] [int] IDENTITY(1,1) NOT NULL, [GroupName] [nvarchar](50) NULL, CONSTRAINT [PK_
阅读全文
摘要:public void OldSum() { int sum0 = 0; for (int i = 0; i < 10; i++) { sum0 += i; } Assert.AreEqual(45, sum0); } public void NewSum() { int sum1 = Enumer
阅读全文
摘要:十二、相等操作符 如果两个序列的对应元素相等且这两个序列具有相同数量的元素,则视这两个序列相等。 SequenceEqual方法通过并行地枚举两个数据源并比较相应元素来判断两个序列是否相等。如果两个序列完全相等,返回true,否则返回false。以下代码是SequenceEqual方法的实现过程:
阅读全文
摘要:十、转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能。名称以As开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合。名称以To开头的方法可枚举(即时加载)源集合并将项放入相应的集合类型。 1. AsEnumerable 所有实现了IEnumerable<T>接口的类型都
阅读全文
摘要:七、聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值、最大值等。共有7种LINQ聚合查询操作符:Aggregate、Average、Count、LongCount、Max、Min和Sum。 1. Aggregate Aggregate操作符对集合值执行自定义聚合运算。
阅读全文
摘要:四、联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作。这两个数据源对象通过一个共同的值或者属性进行关联。 LINQ有两个联接操作符:Join和GroupJoin。 1. Join Join操作符类似于T-SQL中的inner join,它将两个数据源相联接,根据两个数据源
阅读全文
摘要:一、投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影。下面的示例中使用select从序列中返回Employee表的所有列: //Linq写法 var query = from e in db.Employees where e.FirstName.StartsWith
阅读全文
摘要:一、准备工作 1、Person类: class Person { public string Name { set; get; } public int Age { set; get; } public string Gender { set; get; } public override stri
阅读全文