①
items = items.Where(x => x.MasterData == requestOrder.RequestItemMasterData).ToList();
1.Where
使用了LINQ中的Where方法,用于筛选集合中的元素,这里用来返回布尔值的 Lambda 表达式的结果,返回所有使表达式为true
的元素。
2.Lambda 表达式
x => x.MasterData == requestOrder.RequestItemMasterData;
表达式比较每个元素的MasterData
属性是否等于requestOrder.RequestItemMasterData,x
代表集合中的每个元素。
这里就相当于Select * from XXX where x.MasterData = requestOrder.RequestItemMasterData
3.ToList()
将筛选后的结果转换为List<T>
,确保返回一个具体的集合对象
②
items.FirstOrDefault(requestOrder.TakeOutFilter) is { } item
1.FirstOrDefault(requestOrder.TakeOutFilter)
用于返回集合中第一个满足条件的元素,若未找到则返回默认值(引用类型为 null
).
2.is { } item
模式匹配:is { }
是一个弃元模式(Discard Pattern),用于检查结果是否为非 null
对象
类型推断:若结果非 null
,则将其赋值给变量 item
(类型由编译器自动推断)
等效写法:
var temp = items.FirstOrDefault(requestOrder.TakeOutFilter);
if (temp != null)
{
Item item = temp; // 手动类型转换
// 使用 item
}