如何在C#中将文件交替添加至两个List容器中
把文件交替分配到两个列表的实现方案
嘿,这就帮你搞定这个交替分配文件的需求!结合你给出的Files集合(当天修改的txt文件列表),我整理了两种简单易懂的实现方式:
核心思路
我们只需要在遍历文件的时候,区分当前是第几个文件,然后把奇数位置(第1、3、5…个)的文件放进container1,偶数位置(第2、4、6…个)的放进container2就行。
方式一:用索引判断(直观清晰)
这种方式直接通过遍历的索引来判断,新手也能一眼看懂:// 先初始化用来存文件的两个列表 List<FileInfo> container1 = new List<FileInfo>(); List<FileInfo> container2 = new List<FileInfo>(); // 遍历Files,同时拿到每个文件的索引(索引从0开始) foreach (var (file, index) in Files.Select((file, idx) => (file, idx))) { // 索引为0对应第1个文件,所以索引%2==0时加入container1 if (index % 2 == 0) { container1.Add(file); } else { container2.Add(file); } }方式二:用布尔标记(性能更优)
如果文件数量特别多,这种方式省去了取模计算,效率会稍高一点:List<FileInfo> container1 = new List<FileInfo>(); List<FileInfo> container2 = new List<FileInfo>(); bool shouldAddToContainer1 = true; // 一开始先往container1加 foreach (var file in Files) { if (shouldAddToContainer1) { container1.Add(file); } else { container2.Add(file); } // 每遍历一个文件就切换下一个要加的列表 shouldAddToContainer1 = !shouldAddToContainer1; }
额外补充
- 如果你要存的是文件内容而不是
FileInfo对象,只需要修改添加的逻辑就行:// 把列表改成存字符串的 List<string> container1 = new List<string>(); // 添加时读取文件内容 container1.Add(File.ReadAllText(file.FullName)); - 读取文件的时候可能会遇到权限不足、文件被占用的情况,记得加上
try-catch块来处理异常,避免程序崩溃。
内容的提问来源于stack exchange,提问作者Dinesh kumar Mohan
相关产品推荐
相关产品推荐

