You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:34:11