博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Linq复杂一点的查询
阅读量:2026 次
发布时间:2019-04-28

本文共 7114 字,大约阅读时间需要 23 分钟。

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
tt1 = new List
{ new T1 {ID = 1,MAC = "111111" }, new T1 {ID = 2,MAC = "222222" }, new T1 {ID = 4,MAC = "333333" }, }; List
tt2 = new List
{ 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
scs { get; set; } } class SC { public string sid { get; set; } public string cid { get; set; } public int score { get; set; } public virtual ICollection
students { get; set; } public virtual ICollection
courses { get; set; } } class Course { public string cid { get; set; } public string description { get; set; } public virtual ICollection
scs { get; set; } } class SCCompare:IEqualityComparer
{ 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; } }}

转载地址:http://xtdaf.baihongyu.com/

你可能感兴趣的文章
Spring技术知识点总结之五——Servlet 生命周期
查看>>
Tomcat技术知识点总结
查看>>
数据库技术知识点总结之三——索引相关内容
查看>>
数据库技术知识点总结之四——乐观锁与悲观锁
查看>>
数据结构技术知识总结之一——二叉树
查看>>
JVM技术总结之二——GC机制
查看>>
JVM技术总结之四——JVM内存结构
查看>>
Lucene基本知识入门
查看>>
Windows系统下通过PSCP传输文件至BeagleBone Black
查看>>
OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
查看>>
背景提取算法——帧间差分法、背景差分法、ViBe算法、ViBe+算法
查看>>
“王大锤の非诚勿扰” —— Spring IoC / DI 思想详述
查看>>
服务假死问题解决过程实记(三)——缓存问题优化
查看>>
Individual Homework -----questions about the text book by 张静
查看>>
[初心者适用]如何为代码编写基本的文档
查看>>
DailyScrum beta 第三天!
查看>>
骚博记, 又名: building another twitter
查看>>
Daily scrum beta 第五天!
查看>>
为什么牛逼?——"Stonie is a KungFu monk"游戏精品功能介绍与详细规范,以及其中的挑战...
查看>>
影响未来的应用ifttt,互联网自主神经系统的又一个有力证据
查看>>