C# Linq复杂一点的查询
来源:互联网 发布:意大利火车时刻表软件 编辑:程序博客网 时间:2024/06/08 11:06
using System;using System.Collections.Generic;using System.Linq;namespace ConsoleApplication22{ class Program { public Student[] students { get; set; } public SC[] scs { get; set; } public Course[] courses { get; set; } public Program() { students = new Student[] { new Student { sid = "cxc", age = 18, sex = true, birth = DateTime.Now }, new Student { sid = "qwe", age = 19, sex = false, birth = DateTime.Now }, new Student { sid = "zxc", age = 17, sex = false, birth = DateTime.Now }, new Student { sid = "asd", age = 16, sex = true, birth = DateTime.Now } }; scs = new SC[] { new SC {sid = "cxc",cid="A",score =83 }, new SC {sid = "cxc",cid="B",score =94 }, new SC {sid = "cxc",cid="C",score =87 }, new SC {sid = "qwe",cid="A",score =65 }, new SC {sid = "qwe",cid="B",score = 76 }, new SC {sid = "asd",cid="A",score =74 }, new SC {sid = "asd",cid="B",score =87 }, new SC {sid = "zxc",cid="A",score =90 }, new SC {sid = "zxc",cid="B",score =81 } }; courses = new Course[] { new Course {cid = "A" ,description = "这是A课程"}, new Course {cid = "B" ,description = "这是B课程"} }; } static void Main(string[] args) { Program p = new Program(); var result = p.students.Where(s => s.age > 17).OrderByDescending(s=>s.age); foreach(Student s in result) { Console.WriteLine("sid:{0} age:{1} sex:{2} birth:{3}",s.sid,s.age,s.sex,s.birth); } Console.WriteLine("======================我是华丽分割线======================"); var result1 = p.scs.Count(); Console.WriteLine(result1); Console.WriteLine("======================我是华丽分割线======================"); var result2 = p.scs.Distinct(new SCCompare());//Distinct的使用 foreach(var s in result2) { Console.WriteLine("sid:{0} cid:{1} score:{2}", s.sid, s.cid, s.score); } Console.WriteLine("======================我是华丽分割线======================"); var result3 = p.scs.Max(s => s.score);//94 Console.WriteLine(result3); Console.WriteLine("======================我是华丽分割线======================"); var result4 = p.scs.GroupBy(s => s.sid).Select(g=>(new { sid=g.Key,score=g.Sum(s=>s.score)})); foreach (var s in result4) { Console.WriteLine(s.sid+":"+s.score); } Console.WriteLine("======================我是华丽分割线======================"); var result5 = from s in p.students join ss in p.scs on s.sid equals ss.sid select new { sid = s.sid, age = s.age, cid = ss.cid, score = ss.score }; foreach (var s in result5) { Console.WriteLine(s.sid + ":" + s.age + ":" +s.cid + ":" +s.score); } Console.WriteLine("======================我是华丽分割线======================"); var result6 = from rr in (from r in result5 group r by r.sid into g //注意这个 into ,在查询的过程中划分出新结果 select new { sid = g.Key, score = g.Sum(sum => sum.score) }) where rr.score>170 select rr; foreach (var s in result6) { Console.WriteLine(s.sid + ":" + s.score); } Console.WriteLine("======================我是华丽分割线======================"); List<T1> tt1 = new List<T1> { new T1 {ID = 1,MAC = "111111" }, new T1 {ID = 2,MAC = "222222" }, new T1 {ID = 4,MAC = "333333" }, }; List<T2> tt2 = new List<T2> { new T2 {ID = 1,PV = 51,UV = 72 }, new T2 {ID = 2,PV = 48,UV = 92 }, new T2 {ID = 4,PV = 57,UV = 62 }, new T2 {ID = 1,PV = 38,UV = 85 }, new T2 {ID = 2,PV = 46,UV = 180 }, new T2 {ID = 4,PV = 87,UV = 69 } }; var result7 = from t1 in tt1 join t2 in tt2 on t1.ID equals t2.ID select new { ID = t1.ID, MAC = t1.MAC, PV = t2.PV, UV = t2.UV }; result7 = from t in result7 group t by new { t.ID, t.MAC } into tt select new { ID = tt.Key.ID,MAC=tt.Key.MAC,PV = tt.Sum(s=>s.PV), UV = tt.Sum(s => s.UV) }; Console.WriteLine("ID:MAC:PV:UV"); foreach (var s in result7) { Console.WriteLine(s.ID + ":" + s.MAC + ":" + s.PV + ":" + s.UV); } Console.WriteLine("======================我是华丽分割线======================"); var result8 = from s in p.scs join c in p.courses on s.cid equals c.cid into left from l in left.DefaultIfEmpty() select new { sid = s.sid, cid = s.cid, score = s.score, description = l==null?"空":l.description }; foreach (var s in result8) { Console.WriteLine(s.sid + ":" + s.cid+ ":" + s.score + ":" + s.description); } Console.WriteLine("======================我是华丽分割线======================"); var result9 = (from t in tt1 where !(from t1 in tt1 select t1.ID).Take(2).Contains(t.ID) select t).Take(1); foreach (var s in result9) //查询第3条 { Console.WriteLine(s.ID + ":" + s.MAC); } Console.WriteLine("======================我是华丽分割线======================"); } } class Student { public string sid { get; set; } public int age { get; set; } public bool sex { get; set; } public DateTime birth { get; set; } public virtual ICollection<SC> scs { get; set; } } class SC { public string sid { get; set; } public string cid { get; set; } public int score { get; set; } public virtual ICollection<Student> students { get; set; } public virtual ICollection<Course> courses { get; set; } } class Course { public string cid { get; set; } public string description { get; set; } public virtual ICollection<SC> scs { get; set; } } class SCCompare:IEqualityComparer<SC> { public bool Equals(SC s1, SC s2) { return s1.cid.Equals(s2.cid)&&s1.sid.Equals(s2.sid)&&s1.score.Equals(s2.score); } public int GetHashCode(SC s) { return base.GetHashCode(); } } class T1 { public int ID { get; set; } public string MAC { get; set; } } class T2 { public int ID { get; set; } public int PV { get; set; } public int UV { get; set; } }}
0 0
- C# Linq复杂一点的查询
- LINQ To XML:之复杂的查询举例
- Entity framewrok (linq to entity)查询优化的一点摸索
- C# Linq查询的基本练习
- c# LINQ查询语句
- C# LINQ查询
- C# LINQ查询 类
- unity c# LINQ查询
- LINQ to DataSet实现复杂数据查询
- LINQ to DataSet实现复杂数据查询
- 复杂一点的变换
- 复杂一点的CV
- Linq复杂查询 LINQ to Entities: Combining Predicates
- kendu 的下拉复选+linq 的复杂查询+一句话二次筛选+前端使用
- C#3.0 LINQ 查询语法
- C#3.0 LINQ 查询语法
- C#3.0 LINQ 查询语法
- C#3.0 LINQ 查询语法
- 第八道ACM程序题
- iOS Crash收集框架
- C# 使用Linq
- 【模态窗】制作适合手机页面的模态弹窗
- 自定义View之TitleBar
- C# Linq复杂一点的查询
- Android MediaPlayer状态机 接口 方法解析
- selector
- FBO离屏渲染技术
- c++ 链表类创建 demo
- 获取radio点击事件
- js 判断点是否在多边形内
- Lua_第 20 章 IO库
- framework 开发 之 mmssms.db 中表结构的理解