一、Linq有两种语法:

1、  方法语法

2、  查询语法

下面举个例子看看这两种方法的区别

比如现在有一个学生类

public class student

{

public string username { get; set; }

public int age { get; set; }

public string sex { get; set; }

}

我们通过一个方法来添加很多同学

public IList<student> GetStu(int n)

{

IList<student> stuList = new List<student>();

for (int i = 0; i < n; i++)

{

student stu = new student();

stu.age = 25 + i;

stu.sex = "男" + i;

stu.username = "张三" + i;

stuList.Add(stu);

}

return stuList;

}

那么这个方法返回的就是一个list集合,下面我们就可以通过linq对这个集合进行操作

首先我们来查询所有的学生

A、查询语法:

var list = GetStu(10);

var result = from s in list

select new { stuname=s.username,sex=s.sex,age=s.age};

这是linq常用的语法from 变量 in 集合

Select 变量

B、方法语法

var result1 = list.Select(s1 => new { username = s1.username, age = s1.age, sex = s1.sex });

这就是方法语法,符合一般的C#语法

这两种方法的执行结果是一样的,唯一的区别就是语法

二、输出的方式

输出的方式也有两种,我们知道linq主要对集合进行操作的,所以一般都需要循环输出

第一种输出方式:

string stt = null;

foreach (var sa in result3)

{

stt += sa.username;

}

Response.Write(stt);

这是我们经常用到的foreach循环

第二种输出方式:

result.ToList().ForEach(s => { Response.Write(s.stuname+s.sex+s.age); });

这种方式很简介,直接调用ForEach方法,方法体内是一个limba表达式

另外说明下ToList()方法作用,在linq中有种延迟执行,就是当我们在from…select时候,返回的结果并没有执行,当我们循环调用的时候才执行,这就是延迟执行,有时候为了立即执行,我们需要用到ToList()

三、下面就来简单说说linq常用的几种查询

1、条件选择查询(where)

比如我们要查询年龄大于26的学生,可以这样写

var result = from s in list

where s.age>26     //条件查询

select s.username;

或者这样写

var result2 = list.Where(s => s.age > 25);   //条件查询

2、   查询排序

比如我们要按照学生年龄倒序排列查询

var result = from s in list

orderby s.age descending    //排序

where s.age>26     //条件查询

select s.username;

或者这样写

var result3 = list.OrderByDescending(s1 =>s1.age);

3、   数据查询分页显示

使用了Skip和Take方法

Skip作用跳过指定数量的元素

Take的作用是返回指定位置连续数量的元素

var list1 = GetList(50);

for (int i = 0; i < 5; i++)

{

Response.Write("这是第" + (i + 1) + "页");

var result = from s in list.Skip(i * 10).Take(10)

select s;

result.ToList().ForEach(s => { Response.Write(s); });

}

这就是分5页,每页显示10个的分页方式

4|、返回单个元素

用到First(),FirstOrDefault(),single,singleOrDefault()

First():返回第一个元素,如果没有,则抛出异常

FirstOrDefault():返回第一个元素,如果没有,则返回空,一般情况下会返回null

Single:返回的是元素中唯一的元素,如果小于一条,则抛出异常

singleOrDefault:返回的是元素中唯一的元素,如果小于一条,则返回空,通常是null

var result1 = from r in list1

select r;

var rt = result1.First();

result1.Single()

上面只是简单的介绍了下linq的用法,具体项目中用到了,在具体对待

下载:/Files/shuang121/linq的基本操作.doc

linq to sql操作

linq基本操作的更多相关文章

  1. 一篇文章教你学会ASP.Net Core LINQ基本操作

    一篇文章教你学会ASP.Net Core LINQ基本操作 为什么要使用LINQ LINQ中提供了很多集合的扩展方法,配合lambda能简化数据处理. 例如我们想要找出一个IEnumerable< ...

  2. C# LINQ 基本操作实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Linq 基本操作

    在linq中排序方法有: OrderBy()  --对某列升序排序 ThenBy()    --某列升序后对另一列后续升序排序 OrderByDescending() --对某列降序排序 ThenBy ...

  4. .NETCoreCSharp 中级篇2-3 Linq简介

    .NETCoreCSharp 中级篇2-3 本节内容为Linq及其拓展方法.Linq中表达式树的使用 简介 语言集成查询(LINQ)是一系列直接将查询功能集成到C#语言的技术统称.数据查询历来都表示为 ...

  5. Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  6. C#中Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  7. Linq学习笔记四之linq to sql 的基本操作

    首先需要在项目中新增一个 linq  to sql 的服务 新增项,数据,LINQ TO sql 类的这个方法 第二步需要一个model类,用作映射 [Table] public class S_ZD ...

  8. linq to xml 基本操作

    使用XDocument类来进行简单的xml操作,用于软件参数的设置保存. using System; using System.Collections.Generic; using System.Li ...

  9. Linq 查询基本操作

    - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 - let 子句 - 复合from子句 - 在某 ...

随机推荐

  1. daemon_inetd函数

    #include <syslog.h> extern int daemon_proc; /* defined in error.c */ void daemon_inetd(const c ...

  2. 简单linux命令1

    1. cat 一次显示整个文件: cat filename 从键盘创建一个文件: cat> filename 将文件合并:  cat file1 file2 > filename 2.  ...

  3. JavaScript 小工具

    1. 字符串格式化输出 支持形如: Orders of {1} or more {0}' {0},{1}代表第几个参数,包含了完善的异常处理.当给定参数少于格式化串中占位符个数时,未找到的直接留白. ...

  4. transition的属性变化

    链接:https://www.cnblogs.com/yehui-mmd/p/5934157.html css3——transition属性和opacity属性   [transition-durat ...

  5. [C++]最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583)

    Question 例题3-5 最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583) 如果x+x的各个数字之和得到y,就是说x是y的生成元.给出n( ...

  6. 使用flask_socketio实现客户端间即时通信

    前期没有来得及好好总结,现在复习总结一下: Socket.IO 背后主要的思想是你可以发送和接收想要的任何事件,携带你想要的任何数据.任何可以编码为 JSON 的对象都可以做到,并且也支持二进制数据. ...

  7. 缓存设计(cache-design)

    分布式缓存设计 目前常见的缓存方案都是分层缓存,通常可以分为以下几层: 1.1NG本地缓存,命中的话直接返回 1.2 NG没有命中时则需要查询分布式缓存,如redis 1.3 如果分布式缓存没有命中则 ...

  8. LR-Controller 如何自定义显示虚拟用户状态

    我们压测时,如何直观,实时地查看当前运行账号和迭代情况呢. 在运行脚本中添加一行代码就解决了~~~~~~~~~~~

  9. iic 之24C256存储器 及PCF8563

    参考文章: http://www.21ic.com/jichuzhishi/mcu/memory/2013-02-28/159439.html 完整的例子: http://blog.csdn.net/ ...

  10. day 11 - 2 装饰器练习

    1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件)要求登录成功一次,后续的函数都无需再输入用户名和密码 FLAG = False def login(func): def inner ...