C#基础:不写for循环的五种方式

一、LINQ处理

筛查(Where)、分组(GroupBy)、判空(Any)、赋值(Select)等优先选择LINQ

【常规】

cs 复制代码
List<int> nums = new(){1,2,3,4,5,6};
// 手写for:遍历判断,add到新集合
var even = nums.Where(x => x % 2 == 0).ToList();
// [2,4,6]

【selectMany重构实体】

cs 复制代码
var query = listA.SelectMany(a => listB.Select(b => new {a, b}));
foreach(var item in query)
{
    Console.WriteLine($"{item.a},{item.b}");
}

二、匿名表达式重构实体

cs 复制代码
var query = from a in listA
            from b in listB
            select new {a, b};

foreach(var x in query)
{
    Console.WriteLine($"{x.a},{x.b}");
}

三、类的只读派生属性

cs 复制代码
public class TrainShow
{
	/// <summary>
	/// 换乘消耗时间
	/// </summary>
	public TimeSpan WaitConsumeTime { get; set; } 

	/// <summary>
	/// 换乘消耗时间
	/// </summary>
	public string WaitConsumeTimeStr => $"{WaitConsumeTime.Hours}时{WaitConsumeTime.Minutes}分";

}

四、反射赋值

cs 复制代码
var list1 = sourcelist.MapTo<StudentDto>(); // MapTo是封装的反射方法,能够将字段映射过去
相关推荐
三8442 小时前
webshell缓存绕过/哈希碰撞
算法·哈希算法
致Great9 小时前
Pi 的上下文压缩,到底是怎么工作的?
算法
wuyk55510 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
watersink10 小时前
机器学习聚类算法
算法·机器学习·聚类
luj_176811 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
饼饼学习空间智能12 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
en.en..13 小时前
数据结构考点解析:逻辑闭环与存储循环辨析
数据结构
蛋先生DX14 小时前
你瘦不下来但大模型可以:量化原理了解一下
深度学习·算法·llm