码迷,mamicode.com
首页 > 其他好文 > 详细

LINQ 操作符

时间:2014-05-22 16:27:07      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:des   class   c   tar   ext   a   

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace LinQ
{
class Program
{
static void Main(string[] args)
{
l1();
Console.WriteLine();
l2();
Console.WriteLine();
l3();
Console.WriteLine();
l4();
Console.WriteLine();
l5();
Console.WriteLine();
l6();
Console.WriteLine();
l7();
Console.WriteLine();
l8();
Console.WriteLine();
l9();
Console.WriteLine();
l10();
Console.Read();
}
public static void l1()
{
int[] scores = new int[] { 88, 89, 100, 51, 23, 92, 81, 60 };
IEnumerable<int> scoreQuery = from scrore in scores where scrore > 70 select scrore;
foreach (int i in scoreQuery)
{
Console.Write(i + " ");

}
}

/*linq检索数据转换数据
*合并两个序列
*/
class Student
{
public string StuNo { get; set; }
public string StuName { get; set; }
public string StuCollege { get; set; }
public List<int> StuScores;
}
class Teacher
{
public string TeaNo { get; set; }
public string TeaName { get; set; }
public string TeaCollege { get; set; }
}
public static void l2()
{
List<Student> students = new List<Student>() {
new Student{StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo ="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}
};
List<Teacher> teachers = new List<Teacher>() {
new Teacher {TeaNo ="001",TeaName ="张华",TeaCollege ="信息工程学院"},
new Teacher {TeaNo ="002",TeaName ="王丽",TeaCollege ="机电学院"}
};
var a = (from student in students where student.StuCollege == "信息工程学院" select student.StuName).Concat(from teacher in teachers
where teacher.TeaCollege == "信息工程学院"
select teacher.TeaName);
Console.WriteLine("信息工程学院的老师和同学们有:");
foreach (var person in a)
{
Console.WriteLine(person);
}
}
/*
*选择源序列元素的一个或多个属性构成元素
*/
public static void l3()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores=new List<int> {97,92,81,60}},
new Student {StuNo ="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}
};
var a = from student in students select student.StuName;
foreach (var person in a)
{
Console.WriteLine(person);
}
var a1 = from student in students select new { student.StuNo, student.StuName };
foreach (var person in a1)
{
Console.WriteLine("{0},{1}", person.StuNo, person.StuName);
}
}

/*
* LINQ的推迟查询
* **/
public static void l4()
{
List<string> Cites = new List<string> { "shanghai","beijing","xiamen","qingdao","xian"};
var cityWiths = from c in Cites where c.StartsWith("s") orderby c select c;
Console.WriteLine("第一次查询名称以‘S’起始的城市");
foreach (string city in cityWiths)
{
Console.WriteLine(city);
}
Console.WriteLine();
Cites.Add("shengzhen");
Cites.Add("shenyang");
Console.WriteLine("第二次查询名称以‘s’起始的城市");
foreach (string city in cityWiths)
{
Console.WriteLine(city);
}
}

/*
* 标准查询操作符
* where 过滤操作符定义了返回元素的条件
* select 投射操作符用于把对象转换成另一个类型的对象
* orderby 排序操作符改变返回元素的顺序
* group by 组合运算符数据放在一个数组中
* Count,Sum,Min,Max,Average 合计操作符计算集合的一个值,利用这些合作操作符,可以计算所有值的总和,元素的个数,值最大和最小的元素,平均值
* Distinct 从集合中删除重复的元素
* join 链接运算符用于链接两个集合
* **/

 

 

/*
* where 子句
* **/
public static void l5()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}
};
var a = (from student in students
where student.StuCollege == "信息工程学院" && student.StuScores.Average() > 75
select student.StuName);
foreach (var person in a)
{
Console.WriteLine(person);
}
}
/*
* orderby子句
* **/
public static void l6()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}
};
var a = from student in students orderby student.StuName descending select student.StuName;
foreach (var person in a)
{
Console.WriteLine(person);
}
}
/*
* group by子句
* **/
public static void l7()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}},
new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,90}}
};
var a = from student in students
group student by student.StuCollege into collegeGroup
select new { College = collegeGroup.Key, Count = collegeGroup.Count() };
foreach (var person in a)
{
Console.WriteLine("{0}{1}", person.College, person.Count);
}
}
/*
* 合计操作符
**/
public static void l8()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}},
new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,90}}
};
int a = (from student in students select students).Count();
//Sum,Min,Max,Average原理与其相同
Console.WriteLine("学生总数为:");
Console.WriteLine(a);

}
/*
* Distinct运算符
*
**/
public static void l9()
{
List<Student> students = new List<Student>() {
new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}},
new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}},
new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,70}}
};
var a = (from student in students select student.StuCollege).Distinct();
foreach (var college in a)
{
Console.WriteLine(college);
}
}

/*
* join用于链接两个集合查询语法为join...in...on....equals
*
**/
class Student3
{
public string StuNo { get; set; }
public string StuName { get; set; }
public string CollegeNo { get; set; }
public List<int> StuScores;
}
class College
{
public string CollegeNo { get; set; }
public string CollegeName { get; set; }
}
public static void l10()
{
List<Student3> students = new List<Student3>() {
new Student3 {StuNo ="01",StuName ="张三",CollegeNo ="001",StuScores =new List<int> {97,92,81,60}},
new Student3 {StuNo="02",StuName ="李四",CollegeNo ="002",StuScores =new List<int> {90,95,78,70}},
new Student3 {StuNo ="03",StuName ="王五",CollegeNo ="003",StuScores =new List<int> {96,95,79,70}}
};
List<College> colleges = new List<College>() {
new College {CollegeNo="001",CollegeName ="信息工程学院" },
new College {CollegeNo ="002",CollegeName ="机电学院"}
};
var a = from student in students
join college in colleges on student.CollegeNo equals college.CollegeNo
select new { student.StuName, college.CollegeName };
foreach (var person in a)
{
Console.WriteLine("{0 } {1}", person.StuName, person.CollegeName);
}

}
}
}

LINQ 操作符,布布扣,bubuko.com

LINQ 操作符

标签:des   class   c   tar   ext   a   

原文地址:http://www.cnblogs.com/sumg/p/3743066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!