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是封装的反射方法,能够将字段映射过去
相关推荐
NEFU_Jyj9 小时前
牛客周赛R168
算法
likexuec15 小时前
数据结构(2)
数据结构
Navigator_Z16 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH17 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶18 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
雪落漂泊18 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆67519 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
LabVIEW开发20 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
严肃小白兔21 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab