c# - C# Foreach 循环始终创建一个新文件
问题描述
我想创建一个为每个供应商创建一个新文件的方法。
不幸的是,我的尝试不起作用。
它只创建一个文件。
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++;
}
filenumber
您实际上可以通过使用普通的 for 循环来摆脱额外的变量。这样增量将自动发生:
for (int i = 0; i < SuppliersNr.Count; i++) //<- assuming that SuppliersNr is a List<string>
{
sw = new StreamWriter(filenameBase + (i + 1).ToString("D2"));
}
推荐阅读
- python-3.x - Pythonnet 列表
无法转换类型 - c++ - 图的 C++ 邻接表表示
- pandas - 如何根据时间更改日期?
- spring-boot - 如何有效地使用 JedisConfig 池而不增加超过 maxtotal 的连接数?
- c# - Entity Framework Core 3.1.6 的动态查询构建问题
- python - 无法使用 Python 3“SMTPServerDisconnected:连接意外关闭”访问 gmail 帐户
- php - 现场环境中的 Laravel echo 和 pusher 403
- python-3.x - Ruby has_many:通过关联到 python django
- url-routing - virtualservice(istio)下如何添加多个请求匹配器和重写?
- time-series - 在 SPSS 中规范化和绘制时间序列数据