C# Foreach 循环创建一个新文件

标签 c#

我想创建一个为每个供应商创建一个新文件的方法。

不幸的是,我的尝试没有奏效。

只创建一个文件。

My List contains 
SupplierNr     ProofNr
13245242       45519013979
50945724       45519104207
50851942       45519130964
50940487       45519139065
13496912       45519139000

它应该创建 5 个文件,而不是一个。

我的方法

StreamWriter sw;
int filenumber = 1;
DateTime now = DateTime.Now;
string filename = $"C:\\Users\\pasca\\Desktop\\Test\\i.lle_alt.{now.ToString("yyyyMMdd")}{filenumber.ToString("D2")}";

foreach (string Supplier in SuppliersNr)
{
    int SPID = 0;

    sw = new StreamWriter(filename);

    for (int ID = 0; ID < CustomerProduct.Count; ID++)
    {
        sw.WriteLine($"{CustomerProduct[ID]};{DateBegin};{DateEnd};{Supplier};{Origin[ID]};{NonPreference[ID]};{ProofNr[SPID]};");
    }

    SPnr++;
    filenumber++;
    sw.Close();
}

你能解释一下我需要改变什么吗,因为我现在搜索了很多但没有找到任何例子或我的问题的东西。

最佳答案

尽管您增加了 filenumber,但您永远不会在循环内更新变量 filename

我建议创建一个固定的基本文件名部分(因为它在迭代期间不会改变:

string filenameBase = $"C:\\Users\\pasca\\Desktop\\Test\\i.lle_alt.{now.ToString("yyyyMMdd")}"

在循环内部只改变最后的部分

foreach (string Supplier in SuppliersNr)
{
    sw = new StreamWriter(filenameBase + filenumber.ToString("D2"));
    filenumber++;       
}

您实际上可以通过使用普通的 for 循环来摆脱额外的变量 filenumber。这样增量会自动发生:

for (int i = 0; i < SuppliersNr.Count; i++) //<- assuming that SuppliersNr is a List<string>
{
    sw = new StreamWriter(filenameBase + (i + 1).ToString("D2"));       
}

关于C# Foreach 循环创建一个新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51133092/

相关文章:

c# - 如何使用 C# 关键字作为属性名称?

c# - 如果它有小数位,则将值增加 1?

c# - 在不知道显式类型的情况下将装箱的可枚举对象转换为对象数组

c# - ASP.NET Core 中必需的查询字符串参数

c# - Visual Studio 项目中的二进制依赖项

C# 如何使用使用不同 CPU 架构的库?

c# - 如何设置使用 .NET Web 应用程序的子文件夹作为其基础的 IIS 网站?

c# - 使用 linq 查询连接两个列表 - C#

c# - 如何使用 slider 控件调整位图的亮度?

c# - POCO - 展平或使用复杂类型