当前位置:网站首页>C#List的使用以及Linq的使用
C#List的使用以及Linq的使用
2022-08-10 10:08:00 【kuilaurence】
class Student //先构建一个结构
{
public int year;
public string name;
}
List<Student> stus = new List<Student>();
stus.Add(new Student() {
year = 1996, name = "啊三" });
stus.Add(new Student() {
year = 1999, name = "牛二" });
stus.Add(new Student() {
year = 2002, name = "牛三" });
stus.Add(new Student() {
year = 1994, name = "卡尔文" });
stus.Add(new Student() {
year = 2004, name = "狗头" });
1.List自带方法:Find 查找单个元素 | FindIndex 查找元素的下标 | FindAll 查找符合条件的元素并返回数组
Student s = stus.Find(item => item.name == "狗头");//查找符合条件的首个元素 返回的<T> item
Console.WriteLine("student:" + s.name + " " + s.year);
int index = stus.FindIndex(item => item.name == "狗头");//查找符合条件的首个元素的下标 返回的 int
Console.WriteLine("index:" + index);
var lis = stus.FindAll(item => item.year > 2000);//查找符合条件的所以元素 返回的 list
foreach (var item in lis)
{
Console.WriteLine("findall" + item.year + " " + item.name);
}
tips:
string name = stus.Find(item => item.year == 2002).name;//查找出生时间是2002年的学生,没出问题
Console.WriteLine("name:" + name);
string name1 = stus.Find(item => item.year == 2003)?.name ?? "Alice";
//查询2003很明显会报错,所以使用[ ?.]处理报空,然后用[ ?? ]给默认值。注意:[ .? ]是高版本特性,低版本用不了。
Console.WriteLine("name1:" + name1);
2.Linq:Where 筛选 | OrderBy 排序 | select 投影
var list1 = stus.Where(item => item.year < 2000).ToList();//筛选年小于2000的学生
foreach (var item in list1)
{
Console.WriteLine("where:" + item.year + " " + item.name);
}
var list2 = stus.Where(item => item.year < 2000).OrderBy(item => item.year).ToList();//筛选排序年小于2000的学生
foreach (var item in list2)
{
Console.WriteLine("OrderBy:" + item.year + " " + item.name);
}
var list3 = stus.Where(item => item.year < 2000).OrderBy(item => item.year).Select(item => new {
age = 2022 - item.year, nick = item.name }).ToList();//筛选排序年小于2000的学生重新构建结构
foreach (var item in list3)
{
Console.WriteLine("Select:" + item.age + " " + item.nick);
}
边栏推荐
- MySQL 执行查询流程
- 跨公网环境,路由策略,进行设备的访问
- 「业务架构」TOGAF建模:组织分解图(组织映射)
- Thrift -- 跨语言RPC 框架
- 2022.8.8-----leetcode.761
- 对话陈赐靓:哪吒要让高端产品大众化
- 「第二部:容器和微服务架构」(1) 基于容器应用架构设计原则
- Swin Transformer作者曹越加入智源,开展视觉基础模型研究
- Redis(三)——配置文件详解、发布和订阅、新数据类型
- Situation丨The intrusion of hackers intensifies, and the shooting range sets up a "defense shield" for network security
猜你喜欢
随机推荐
MongoDB database notes
「业务架构」TAGAF建模:业务服务/信息图
SQL中的字符串截取函数
ESP8266 教程1 — ESP8266硬件平台介绍
【STL】位图的介绍使用以及代码的模拟实现
LiveNVR操作日志页面快速筛选上级国标平台的调用记录直播观看录像回看等操作
关于编程本质那些事
序列化技术ProtoBuf
【C语言】头文件#include <conio.h>,conio是Console Input/Output(控制台输入输出)
阻塞队列与线程池原理
CentOS和Ubantu的Mysql主从配置
GO文件相关操作使用
Plot temperature curves; QChart,
LeetCode Algorithm 914. 卡牌分组
[Concept of Theory of Knowledge] "Progress in the Theory of Reason" University of Leuven 2022 latest 220-page doctoral dissertation
C语言题解:倒置字符串
《MySQL高级篇》六、索引的创建与设计原则
3D旋转文本动画js特效
Thrift -- 跨语言RPC 框架
VBA: Inputbox Function and Inputbox Method