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;
呢?