首页 > 解决方案 > 如何在没有 foreach 的情况下使“foreach(名称中的字符串 TXTname)”成为变量,还是需要 foreach?

问题描述

所以我试图将变量存储到文本文件中,以便我的程序可以稍后调用它们,但我需要这些文件设置名称,并且当我尝试它永远无法正常工作时。

我尝试在 foreach 循环中使用 foreach 循环,我尝试了很多东西,但所有这些都只是搞砸了变量数据

string[] lines = { name, FirstBlock, MonIstem, WedIstem, ThridBlock, FourthBlock, "Design Time", SixthBlock, TueIstem, ThurIstem, EighthBlock, NinthBlock, "Design Time", FriIstem };
string[] names = { "name", "FirstBlock", "MonIstem", "WedIstem", "ThirdBlock", "FourthBlock", "Design Time", "SixthBlock", "TueIstem", "ThurIstem", "EightBlock", "NinthBlock", "Design Time", "FriIstem", };
foreach (string TXTname in names)
{
    Console.WriteLine($"Saving {TXTname}");
}
foreach (string line in lines)
{
    string getNameOfVar = nameof(line);
    using (FileStream bs = File.OpenWrite($@"C:\Users\gn193755\Documents\{TXTname}.txt"))
    {
        byte[] thing = new UTF8Encoding(true).GetBytes(line);
        bs.Write(thing, 0, thing.Length);
    }
}

没有错误消息,但是当我打开文本文件时,要么只有一个文本文件,要么它们都有相同的单词,或者它们只是乱码,我一直期待有正确的文件名和正确的文本。

标签: c#foreach

解决方案


我太笨了,我做了更多的研究,发现了 .zip 的东西。

               var lines = new [] { name, FirstBlock, MonIstem, WedIstem, ThridBlock, FourthBlock, "Design Time", SixthBlock, TueIstem, ThurIstem, EighthBlock, NinthBlock, "Design Time", FriIstem };
            var names = new [] { "name", "FirstBlock", "MonIstem", "WedIstem", "ThirdBlock", "FourthBlock", "Design Time", "SixthBlock", "TueIstem", "ThurIstem", "EightBlock", "NinthBlock", "Design Time", "FriIstem", };
            var linesAndnames = lines.Zip(names, (l, n) => new { Line = l, Name = n });
            foreach (var ln  in linesAndnames)
            {
              var path = $@"C:\Users\gn193755\Documents\{ln.Name}.txt";
              File.WriteAllText(path, ln.Line);
            }
        }

推荐阅读