武林大师

 class MartialArtsMaster{public int ID { get; set; }public string Name { get; set; }public int age { get; set; }public string MenPai { get; set; }public string KongFu { get; set; }public int Level { get; set; }public override string ToString(){return string.Format("ID:{0}, Name = :{1}, age =: {2}, MenPai = :{3}, KongFu = :{4}, Level = :{5}",ID,Name,age,MenPai,KongFu,Level);}}

武功类型

class Kongfu{public int ID { set; get; }public string Name { get; set; }public int Power { get; set; }}
class Program{static void Main(string[] args){var mastreList = new List<MartialArtsMaster>(){new MartialArtsMaster(){ID=1,Name="岳不群",age=58,MenPai="华山",KongFu="葵花宝典",Level=10},new MartialArtsMaster(){ID=2,Name="风清扬",age=23,MenPai="华山",KongFu="孤独九剑",Level=7},new MartialArtsMaster(){ID=3,Name="梅超风",age=45,MenPai="桃花岛",KongFu="九阴真经",Level=9}};var kongfu = new List<Kongfu>(){new Kongfu(){ID=1,Name="打狗棒法",Power=90},new Kongfu(){ID=2,Name="降龙十八掌",Power=100},new Kongfu(){ID=3,Name="葵花宝典",Power=90},new Kongfu(){ID=4,Name="九阴真经",Power=80},new Kongfu(){ID=5,Name="孤独九剑",Power=60},};//用LINQ查询级别大于8的var res = from m in mastreListwhere m.Level > 8select m.Name;//表示把m的集合返回,可以选择要输出的内容   select m就全部输出foreach (var temp in res){Console.WriteLine(temp);}Console.ReadKey();}}

注意要加以下的步骤,才能正常输出。

public override string ToString()
{
return string.Format(“ID:{0}, Name = :{1}, age =: {2}, MenPai = :{3}, KongFu = :{4}, Level =
:{5}”,ID,Name,age,MenPai,KongFu,Level);
}

LINQ联合查询:

var res = from m in mastreList
where m.Level > 8&&m.Menpai==“丐帮”
select m.Name;

扩展方法写法

    var res = mastreList.Where(m=>m.Level>8&&m.Menpai=="丐帮");

LINQ联合管理

                      var res = from m in mastreListfrom k in kongfuwhere m.KongFu==k.Name&&k.Power>85select new { master = m, kongfu = k }; //选择要输出的内容foreach (var temp in res){Console.WriteLine(temp);}

因为MartialArtsMaster没有武功的power,因此知道人名,想知道武功的power,就要从kongfu中去寻找。因此要用到LINQ联合管理。

上述程序的扩展方法用法:

 var res=mastreList.SelectMany(m=>kongfu,(m,k)=>new{master=m,kongfu=k}).Where(x=>x.master.KongFu==x.kongfu.Name&&x.kongfu.Power>85);
foreach (var temp in res){Console.WriteLine(temp);}

对结果进行排序 orderby

 var res = from m in mastreListwhere m.Level > 8// orderby m.age  年龄从小到大排序//orderby m.age,my.Level//先比较年龄,一样的话,再比较多等级排序orderby m.age descending//按年龄从大到小排序select m;//表示把m的集合返回,可以选择要输出的内容  foreach (var temp in res){Console.WriteLine(temp);}

上述代码可以这样写

var res = mastreList.Where(m => m.Level > 8).OrderBy(m => m.age);

多个字段时

var res = mastreList.Where(m => m.Level > 8).OrderBy(m => m.age).ThenBy(m => m.Level);

var res = mastreList.Where(m => m.Level > 8).OrderBy(m => m.age).OrderBy(m => m.Level);
这样是错误的,是先按等级排,又按年龄重新排了一次

Join On联合集合查询

 var res = from m in mastreListjoin k in kongfu on m.KongFu equals k.Name//用join on 做两个集合的连接where k.Power>85select new { master = m, kongFu = k };foreach (var temp in res){Console.WriteLine(temp);}

对结果进行分组操作 into groups

var res = from k in kongfujoin m in mastreList on k.Name equals m.KongFuinto groups//按武功进行分组,看学什么武功的比较多orderby groups.Count()select new { kongfu = k, count = groups.Count() };foreach (var temp in res){Console.WriteLine(temp);}

对结果进行分组操作 group by

var res = from m in mastreListgroup m by m.MenPai into g//按门派进行分组select new { count = g.Count(), key = g.Key };//g.Key表示按照哪个属性分的组foreach (var temp in res){Console.WriteLine(temp);}

量词操作符any all
用来做判断是否存在或是否全是

> 存在: bool res = mastreList.Any(m => m.MenPai == "华山");
> 全是: bool res = mastreList.All(m => m.MenPai == "华山");

Unity学习(C#)——LINQ的使用相关推荐

  1. Unity学习记录——模型与动画

    Unity学习记录--模型与动画 前言 ​ 本文是中山大学软件工程学院2020级3d游戏编程与设计的作业7 编程题:智能巡逻兵 1.学习参考 ​ 除去老师在课堂上讲的内容,本次作业代码与操作主要参考了 ...

  2. Unity学习2:如何实现个性化渲染平面(图文详细)

    Unity学习2:如何实现个性化渲染平面(图文详细) AR Plane Manager(平面追踪对象管理器) 可视化平面 个性化渲染平面 AR Plane Manager(平面追踪对象管理器) 平面管 ...

  3. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  4. unity学习之路—飞机大战

    unity学习之路-飞机大战 这是我第一次进行博客写作,准备把前段时间写的<飞机大战>游戏的制作过程写出来,一方面为自己知识的梳理,另一方面是为分享,当然,前几次写出来的结果肯定很烂,只会 ...

  5. Unity学习shader笔记[一百]简单焦散Caustic效果

    焦散是模仿光透过水底的一个投影景象 有两个版本,改版最后效果如下 这里是简单的基于物体的焦散,基于水体的焦散思路是水面物体的shader中拿到ColorBuffer,然后用水体的屏幕空间坐标取采集Co ...

  6. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  7. Unity学习之Human fall flat创意工坊地图制作

    Unity学习笔记之Human fall flat 主要参考<人类一败涂地>官方教程 Unity版本 详细教程获取 开始工程导入 素材包介绍 界面介绍 工具简介 常用组件简介 多人游戏组件 ...

  8. [Unity 学习] Unity 入门学习及第一个游戏

    [Unity 学习] Unity 入门学习及第一个游戏 跟着教程做的一个小游戏,基本上说就算我这样的零基础,两个小时就能实现. 主要就是熟悉一下 C#和 Unity,做一个能跑的东西. 简单的 Dem ...

  9. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  10. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

最新文章

  1. 《Go语言编程》学习笔记 (二)
  2. r语言electricity数据集_R语言学习-数据集
  3. 人工智能热门图书(深度学习、TensorFlow)免费送!
  4. 分享一个HTML5画布实现的超酷文字弹跳球效果
  5. 电脑知识:磁盘分区相关知识笔记!
  6. selenium 常见面试题以及答案(Java版)
  7. 计算机科学导论教程,计算机科学导论教程重点(6页)-原创力文档
  8. 变分模态分解(VMD)-Python代码
  9. 淘宝客公众号京东淘宝拼多多三合一源码三级代理系统网站源码
  10. Lightning 转 USB Type-A/Type-C 思路
  11. Java基础之Map集合排序
  12. uac2+android,iBasso UAC
  13. 爬虫入门实战:斗鱼弹幕数据抓取,附送11节入门笔记
  14. tibco linux安装手册,Tibco 产品安装手册.doc
  15. EXCEL表格-VLOOKUP多对一结果匹配方法(通配符)
  16. 基于 nRF SDK17.2,Nordic NFC 读写的实现。
  17. 炫酷的生日快乐网页 【附带源码】
  18. HTTPS文件服务器搭建,搭建一个简易的https
  19. 企业行业云计算解决方案
  20. Linux磁盘空间释放

热门文章

  1. mysql恩阳执行脚本_王新栋 | 2017京东商城-京麦平台618备战实践
  2. 计算机技术在游戏中的应用浅论,游戏在计算机教学中的应用
  3. 【Java】IDEA开发GUI应用程序出现汉字变方框问题的解决方法
  4. 考勤表生成器(区分节假日版本)
  5. NGUI动态字体的使用
  6. GTX1660Ti 本地部署 Stable Diffusion踩坑记录
  7. 寻仙显示你与聊天服务器断开连接,新闻资讯-寻仙手游-寻仙手游官方网站-腾讯游戏...
  8. 传言2032年是世界末日? 科学家称此事并非空穴来风
  9. 减震无人船或波浪自适应无人船
  10. mysql字符串拆分split功能_mysql字符串拆分实现split功能