0
|
Pierre-olivier Gendraud · 技术社区 · 6 年前 |
![]() |
1
3
你不需要使用LINQ方法来做你想做的事情。您可以使用枚举器和循环编写自己的代码。毕竟,LINQ to对象操作本身是使用循环实现的。例如 TakeWhile 作为循环源并生成匹配元素的迭代器实现:
缺点是,这会为迭代器生成一个状态机,并返回所有匹配的元素,无论是否使用它们。
您可以编写自己的扩展方法来计算循环中的和并返回
并将其用作扩展方法:
为什么不使用通用方法? 无法指定运算符约束或可寻址接口,这就是为什么 Sum() 每种类型都单独实现自身,例如:
功能方式 将累加器和条件检查器作为函数传递可以用于创建一个通用的、可重用的方法,该方法可以处理任何转换和条件:
这可用于检查整数数组的部分和:
或部分产品的双倍列表:
|
![]() |
2
2
您可以使用TakeWhile从列表中获取项目,直到总和超出某个值
|
![]() |
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
![]() |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |