一、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是封装的反射方法,能够将字段映射过去