C# LiNq的语法以及常用的扩展方法

  首先先来扯一下,这篇博文是我第一次写的,主要是我的一些摘录,希望对大家有所帮助。

Linq的基础

•LINQ(读音link):Linq To SQL(过时)、Linq To Object、Linq To XML、Linq To entity,目的:以统一的方式对数据进行操作。看起来非常像SQL语句,但是和SQL无关。

•var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值。var只能用来语句中,不能用在返回值、参数列表等场合。

•匿名类型,var s = new { Name = "jim", Sex = M },在后面的代码中就能用s.Name 这样的方式引用属性了。匿名类型不是动态类型,最终仍然是编译成一个类,用Reflector查看。如果编译器遇到了一个属性完全一致的匿名类型,则会重用这个类型,而不是每次都创建一个新的类型。也是类型推断的一种表现。

• string name = "ljw"; int age = 30;var p = new { name,age, name.Length};默认命名属性。

•如果推断的属性名冲突,则必须显式指定var p = new { name.Length ,Length2="C#".Length}

•如果写程序的时候调用不了Linq的方法,就看看是否using了system.Linq。

1  Table1TableAdapter adapter = new Table1TableAdapter();
2             /*
3             强类型DataSet与Var.Database1DataSet.Table1DataTable dt = adapter.GetData();
4             强类型DataSet与Var.Database1DataSet.Table1Row row = dt[0];
5              */
6             var dt = adapter.GetData();
7             var row = dt[0];
8             var aa = row.aa;

排序,分组
orderby person.Age descending

1 int[] values = { 1, 2, 5, 2, 3, 5, 5, 3, 4, 3, 3 };
2             var result = from i in values
3                             //按i进行排序,g表示分组
4                          group i by i into g
5                          select g.Key;

扩展方法

下面的方法都是IEnumerable<T>的扩展方法:

Average计算平均值; Min最小元素;Max最大元素;Sum元素总和; Count元素数量;

Concat连接两个序列;//相当于sql的Unoin all

Contains序列是否包含指定元素;

Distinct取得序列中的非重复元素;

Except获得两个序列的差集;

Intersect获得两个序列的交集;

First取得序列第一个元素;

Single取得序列的唯一一个元素,如果元素个数不是1个,则报错;

FirstOrDefault 取得序列第一个元素,如果没有一个元素,则返回默认值;

Linq只能用于范型的序列,IEnumerable<T>,对于非范型,可以用Cast或者OfType

IEnumerable的方法:

Cast<TResult>:由于Linq要针对范型类型操作,对于老版本.Net类等非范型的IEnumerable序列可以用Cast方法转换为范型的序列。ArrayList l; IEnumerable<int> il = l.Cast<int>();

OfType<TResult>:Cast会尝试将序列中所有元素都转换为TResult类型,如果待转换的非范型序列中含有其他类型,则会报错。OfType则是只将序列中挑出指定类型的元素转换到范型序列中。

时间: 2024-10-11 19:58:25

C# LiNq的语法以及常用的扩展方法的相关文章

LinQ 定义带有返回类型的扩展方法3.2

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Diagnostics; namespace ExtensionWithReturn { class Program { static void Main(string[] args) { var s

Farseer.net轻量级开源框架 中级篇:常用的扩展方法

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseMasterPage.BaseControls基类使用 下一篇:Farseer.net轻量级开源框架 中级篇: 常用工具 在使用框架的时候,都需要引用扩展方法的命名空间:using FS.Extend; 1 /// <summary> 2 /// 将值转换成类型对像的值(此方法作为公共的调用,只支持

常用的扩展方法.

注:以下方法皆为收集而来 /// <summary> /// 自定义扩展类 /// </summary> public static class IExtension { /// <summary> /// 是否为空 /// </summary> /// <param name="s"></param> /// <returns></returns> public static bool I

【EF学习笔记11】----------查询中常用的扩展方法

先来看一下我们的表结构: 首先毫无疑问的要创建我们的上下文对象: using (var db = new Entities()) { //执行操作 } Average 平均值: //查询平均分 Console.WriteLine("平均分:"+db.Student.Average(v=>v.Score)); Max 最大值: //查询最高分 Console.WriteLine("最高分:"+db.Student.Max(v=>v.Score)); Min

LINQ与扩展方法

What LinQ是什么? 英文全称Language Integrated Query,中文翻译为语言集成查询.它是一组用于语言的扩展,它通过编写代码以查询数据库相同的方式操作内存数据. LINQ的查询操作是比较有特色也比较常用的,但它也有相关的增删改的操作. Why & How 遍历对象.sql语句用的好好的,为什么又引进LINQ? 或许是初学者,好不容易可以掌握sql语句进行增删改查的操作,或许是被固有的思维绑住,使得我们无法跳出圈子,去审视它的优缺点.sql语句肯定有它的缺点,我们先来看个

.NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以,跟着本篇的步伐,继续来围观. /* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Acti

LINQ查询语法

一.LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression) 1.方法语法:本质是通过扩展方法和Lambda表达式来创建查询 3.查询语法:查询比较类似于SQL查询 关系:.NET公共语言运行库(CLR)并不具有查询语法的概念.所以,编译器会在程序编译时把查询表达式转换为方法语法,即对扩展方法的调用.所以使用方法语法会让我们更加接近和了解LINQ的实现和本质,并且一些查询只能表示为方法调用,如检索序列中的最大值.最小值元素的查询,他们

LinQ—扩展方法

概述 本节主要讲解扩展方法,涉及LinQ的具体知识不多. 扩展方法的描述 .net framework为编程人员提供了很多的类,很多的方法,但是,不论.net framework在类中为我们提供了多么多的方法,有时候仍然不能满足我们的需求,例如:你想让字符串对象具有ToPascal方法,含义就是将字符串转化为Pascal格式,并返回,我们知道,.net framework提供的String类中并没有为我们提供相应的方法,此时,我们应该怎么做才可以达到我们的目的呢?有人说可以继承String类,这

C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re