如何无需迭代将List<T>转换为List<(T,T)>?(DateTime示例)
解决方案:将
List<System.DateTime>转换为连续日期对列表 可以使用LINQ的Zip方法实现,无需手动编写迭代逻辑:
using System.Linq; // 假设MonthlyDates是你的日期集合 var datePairs = MonthlyDates.Zip(MonthlyDates.Skip(1), (current, next) => (current, next)).ToList();
逻辑说明
MonthlyDates.Skip(1)生成一个跳过原集合第一个元素的新序列,即从第二个日期开始的所有元素Zip方法会将原序列的每个元素,与跳过第一个元素后的序列的对应元素一一配对,生成(DateTime, DateTime)类型的元组- 最后通过
ToList()将结果转换为List<(DateTime, DateTime)>类型
比如原集合包含7/31/17、8/31/17、9/29/17等日期时,转换后的集合会得到:(7/31/17, 8/31/17)、(8/31/17, 9/29/17)、(9/29/17, 10/31/17)... 完全符合需求。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

