发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
一、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()
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
c# – 搜索可枚举的最有效方法
foreach (var record in inputDataLines){ var fields = record.var withdrawalPct = Convert.ToDecimal(r["field_2"]) == bps &&Convert.ToDecimal(r["field_3"]) == wit...
MVC学习之前必须掌握的c#基础知识
最后返回的语句要加return 15 */ 16 var nlistperson3 = persons.FindAll(person => person.Age >22 &&person.Name.Contains(''''''''李'''...
Linq 入门系列 [Take,Skip,TakeWhile,SkipWhile]篇
} #endregion TakeWhile--SkipWhile#region TakeWhile--SkipWhile private static void ForExampleAboutTakeWhileOrSkipWhile<T>(T obj) { var stu = Re...
JS学习笔记 原型链和利用原型实现继承
构造函数可以实例化对象 构造函数中有一个属性叫prototype,是构造函数的原型对象 构造函数的原型对象(prototype)中有一个construc...
JavaScript继承的几种方法
继承: 首先继承是一种关系,类(class)与类之间的关系,JS中没有类,但是可以通过构造函数模拟类,然后通过原型来实现继承。age}function ...
C#基础笔记
//保证t2运行后在运行此段代码 lock (sycObj) { foreach (Person item in list) { Console.WriteLine("姓名" + item.Name); T...
一步一步学Linq to sql(一):预备知识
Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、L...
使用ServiceStackRedis链接Redis简介
使用ServiceStackRedis链接Redis简介使用ServiceStackRedis链接Redis简介 收藏。1.通常方式(底层使用json序列化): Redis.Set <UserInfo >( "userinfo ", new UserInfo() { User...
mongoDB 入门指南、示例
db.userInfo.find();db.userInfo.find({age: {$lte: 25}});db.userInfo.find({age: {$gte: 23, $lte: 26}});db.userInfo.find({}, {name: 1, age: 1});db.userInfo.find({age: {$gt: 25}}, {name: 1, a...
微信扫码,在手机上查看选中内容