打破 foreach C#

Break foreach C#

我创建了一个 foreach,它读取 .csv 文件中的各个字段并将它们插入到 xml 文件中。 我想知道是否有可能在读取一系列行(例如 10 行)后阻塞循环。 我该怎么办?

List<string> lines = File.ReadAllLines(path).ToList();
lines.RemoveAt(0);
        

XmlTextWriter writer = new XmlTextWriter(savepath, Encoding.UTF8);

writer.WriteStartDocument();
writer.WriteStartElement("DC8_Recipe");

foreach (var line in lines){
    var csvItem = line.Split(';');
           
    writer.WriteStartElement("DC8_Recipe");
    writer.WriteAttributeString("PlantNo", "01");
    writer.WriteAttributeString("FactoryNo", "01");
    writer.WriteAttributeString("No", csvItem[0].Replace('"', ' '));
    writer.WriteAttributeString("Name", csvItem[2]);
    writer.WriteAttributeString("ShortName", csvItem[3]);
    writer.WriteEndElement();
    writer.WriteStartElement("RecipeSetValueRow");
    writer.WriteAttributeString("SetValue", csvItem[12]);
    writer.WriteStartElement("Material");
    writer.WriteAttributeString("No", csvItem[10]);
    writer.WriteEndElement();
    writer.WriteEndElement();

}

writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();

有多种方法可以满足您的要求。

#1 - decalre 一个计数器 int counter=0 并使用这个变量作为跳出循环的条件 if ((counter++) > 10 ) {break;}

#2(推荐方式)- 使用 .Take(10) 在 IEnumerable 上调用 Take() 将 return 指定数量的连续元素

复制下面的代码并亲自尝试

List<string> lines = File.ReadAllLines(path).ToList();
            lines.RemoveAt(0);


            XmlTextWriter writer = new XmlTextWriter(savepath, Encoding.UTF8);

            writer.WriteStartDocument();
            writer.WriteStartElement("DC8_Recipe");

            foreach (var line in lines.Take(10))
            {
                var csvItem = line.Split(';');

                writer.WriteStartElement("DC8_Recipe");
                writer.WriteAttributeString("PlantNo", "01");
                writer.WriteAttributeString("FactoryNo", "01");
                writer.WriteAttributeString("No", csvItem[0].Replace('"', ' '));
                writer.WriteAttributeString("Name", csvItem[2]);
                writer.WriteAttributeString("ShortName", csvItem[3]);
                writer.WriteEndElement();
                writer.WriteStartElement("RecipeSetValueRow");
                writer.WriteAttributeString("SetValue", csvItem[12]);
                writer.WriteStartElement("Material");
                writer.WriteAttributeString("No", csvItem[10]);
                writer.WriteEndElement();
                writer.WriteEndElement();

            }

            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();

        }