1.Where 根据谓词(逻辑)过滤一系列值
检查每个元素是否满足给定的逻辑条件,返回这些
满足条件的所有元素。
查找所有血量为0的敌人:
e:每个元素 e.Hp == 0:条件
enemies.Where<Enemy>(e => e.Hp == 0);
2.Select 将序列中的每个元素投影到新表单
将源类型中的每个元素通过筛选器转换为你所指定
的另一类型对象。
查找所有敌人的武器:
e:每个元素 e.GetWeapon():对应的新元素
enemies.Select<Enemy, Weapon>(e => e.GetWeapon());
3.OfType 根据指定类型筛选元素
在所有人物中查找队友:
characters.OfType<Friend>();
4.FirstOrDefault、LastOrDefault 返回序列中第一个/最后一个 满足条件的元素
如果没有找到这样的元素,则返回默认值。不带
OrDefault的方法在没找到元素时抛出异常。
查找一个攻击距离大于550且被击飞的敌人:
enemies.FirstOrDefault<Enemy>(e => e.AtkDis > 550 && e.State == State.Off);
5.Distinct 返回序列中不同的元素
删除相同的项,即去重。
将名字去重:
names.Distinct<string>();
6.Intersect、Union、Except 返回两个序列的交集/并集/差集
查找在列表1和列表2中都存在的名字:
nameList1.Union<string>(nameList2);
7.All、Any 判断序列中的所有元素/任意一个元素 是否满足某个条件
All方法在所有元素满足条件时返回True,Any方法在
只要有一个元素满足条件时就返回True。
序列中是否有奔驰:
cars.Any<Car>(e => e is Benz);
8.OrderBy 根据键对序列中的元素进行升序排序
通过元素的某一属性对元素排序。OrderByDescending
表示降序排序,ThenBy表示多级(次要条件)排序。
将扑克牌按点数排序后再按花色排序:
pokers.OrderBy<Poker, int>(e => e.Ranke).ThenBy<Poker, SuitType>(e => e.Suit);
9.Join 基于匹配的键将两个序列中的元素关联起来
查找外部序列中元素某个属性是否与内部序列元素的
某个属性相匹配,将所有匹配的元素合并成新对象序列。
查找既能自动关闭也能拖拽的窗口:
autoWindows.Join<AutoWindow, DragableWindow, string, AutoAndDragableWindow>(dragableWindows, a => a.ID, d => d.ID, (a, d) => new AutoAndDragableWindow { ID = a.ID });
10.Max、Min、Sum、Average 返回序列中的最大值、最小值、总值或平均值
查找最大的文件:
fileInfos.Max<FileInfo>(e => e.Length);