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

如何使用LINQ在C#的List中插入指定文本

LINQ实现方案

LINQ更擅长生成新集合而非直接修改原集合,以下是两种符合需求的实现方案:

方案1:处理所有匹配的目标行

如果文本中存在多个包含arr ff_test的行,此方案会在每个目标行的前一行插入指定内容:

var lines = File.ReadAllLines(buildOutFile);
var targetKeyword = "arr ff_test";
var insertLines = new[] 
{
    "West: &West",
    "    **arr ff_test**",
    "DcName RD1"
};

var result = lines
    .Select((line, index) => new { Line = line, Index = index })
    .SelectMany(item => 
    {
        // 判断下一行是否为目标行(避免索引越界)
        if (item.Index < lines.Length - 1 && lines[item.Index + 1].Contains(targetKeyword))
        {
            // 返回插入内容 + 当前行
            return insertLines.Concat(new[] { item.Line });
        }
        // 无匹配则仅返回当前行
        return new[] { item.Line };
    })
    .ToList();

// 如需覆盖原文件,执行以下代码
// File.WriteAllLines(buildOutFile, result);

方案2:仅处理第一个匹配的目标行

和你原代码逻辑完全一致,只对第一个找到的目标行进行插入操作:

var lines = File.ReadAllLines(buildOutFile).ToList();
var targetIndex = lines.FindIndex(line => line.Contains("arr ff_test"));
var insertLines = new[] 
{
    "West: &West",
    "    **arr ff_test**",
    "DcName RD1"
};

var result = targetIndex > 0 
    ? lines.Take(targetIndex - 1)
           .Concat(insertLines)
           .Concat(lines.Skip(targetIndex - 1))
           .ToList()
    : lines.ToList();

代码说明

  • 用Select((line, index))获取每行的内容与索引,方便判断位置关系
  • SelectMany/Concat用来实现"插入内容"的效果,将单个元素扩展为多个元素
  • 生成新集合而非修改原集合,更符合LINQ的函数式编程风格
  • 添加了索引越界判断,避免目标行在第一行时出现错误

内容的提问来源于stack exchange,提问作者Sravani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:45:23