LINQ常用操作

LINQ

常用操作

包括

查询语法

Lambda

表达式语法方式,只是在表现风格上有所

不同

先定义一个类,便于使用

public class Student

{

public string id {get;set;}

public double english {get;set;}

public double computer {get;set;}

public double math {get;set;}

public double total { get {return

english+computer+math; } }

public double average { get { return total / 3; } }

}

实例化之

//

这对象的来源就多了

,xml,webservice,

数据库

,

业务逻

辑,系统内存

var list = new List<Student>();

Random r = new Random();

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

{

Student s = new Student();

s.id = i.ToString("00");

s.english = r.Next(0,100);

s.math = r.Next(0, 100);

s.computer = r.Next(0, 100);

list.Add(s);

}

4.1

投影

针对数据库而言的一个概念

:

统计平均成绩在

60

分以上的学生人数,不调用类的方法,

只是模拟对结合的查询

list.Count(g => (g.computer + g.english + g.math) /

3 >=60));

//foreach (Student s in list)

//{

//

Console.WriteLine(s.computer);

//}

4.2

选择

//var result = from ss in list

//

select new { ss.id, ss.total,

ss.average };

//

匿名类型

//var result = list.Select( ss => new { ss.id, ss.total,

ss.average });

//

和上面等价

//

遍历

// list.ForEach(s => { Console.WriteLine("total:{0}",

s.math + s.computer + s.english); });

// list.ForEach(s => { Console.WriteLine( s.math +

s.computer + s.english); });

4.3

排序

//

查询方式

var result = from ss in list

orderby ss.average descending

select ss;

//

表达式方式

var result = list.OrderByDescending(ss =>

ss.average);

//

查询平均成绩

>60

的学生

ID

/*

var result = from ss in list where ss.average > 60

select ss;

*/

//var result = list.Where(ss => ss.average >= 70);

/*

foreach (var s in result)

{

Console.WriteLine("id:{0},ave{1}", s.id,

s.average);

}

4.4

数据分页

(这个太好了,在我还是初级程序员的时候,公司有个

伪高人就是封装了分页存储过程的

Web

控件,

然后如鱼得水了好一阵。

做事情最好还是踏实点,

觉得自己差不多了的时候,脑子里装不进新东

西!)

Skip Take

两个方法

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

{

Console.WriteLine("

这是第

:{0}

", i);

Console.WriteLine("---------------------------------

---------------------------");

var result = list.Skip(10).Take(10);

foreach (var s in result)

{

Console.WriteLine("id:{0}ave:{1}", s.id,

s.average);

}

Console.WriteLine("---------------------------------

---------------------------");

}

4.5

返回单条记录

//

查找学生成绩大于

90

的第一名学生

var result = list.FirstOrDefault(s => s.math>90);

if (result != null)

{

Console.WriteLine("id:{0}math:{1}",result.id,re

sult.math.ToString("00.0"));

}

Console.ReadLine();

//

知道

select top1 form user;

吗?

//

MSSql select DISTINCT name, * from user;

呢?

转载请注明文章来自:程序猴(http://www.chengxuhou.com/)
原文地址:https://www.cnblogs.com/minotmin/p/3207058.html