как передать значения после каждой итерации цикла в отдельную переменную или в массив для последующего использования/ использования в цикле?

public static void Run()
{
    public static string desktop = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);

    using (var result = new MemoryStream())
    {
        using (var archive = new ZipArchive(result, ZipArchiveMode.Create, true))
        {
            foreach (string p in found) // List<string> found
            {
                            var pr = archive.CreateEntry("Found_" + p + ".txt");

                            using (var entryStream = pr.Open())
                            {
                                    
                                    entryStream.Write(memone, 0, memory.Length) // byte[] memone
                            }
                        }
                }
            File.WriteAllBytes(@"found.zip", result.ToArray());
    }

    foreach (string path in Paths.sWPaths)
    {
        List<string> my = new List<string> { "qw", "er", "ty", "ui", "op", "as", "df", "gh", };
                List<string> found = Directory.EnumerateDirectories(desktop + "//")
                    .Select(d => new DirectoryInfo(path).Name).Where(n => my.Contains(n)).ToList();
                
                List<file> Informone = Data.Get(desktop + path);
                byte[] memone = cUtils.WriteOne(Informone).ToArray();   
    }
}    

как передать значения после каждой итерации цикла в отдельную переменную или в массив для последующего использования/использования в цикле? (Сразу предупреждаю вас, мне нужно выводить не конечное значение цикла, а значения каждой итерации)

Нужно передавать значения "List< string > found" после каждой итерации в массив или в переменную

foreach (string path in Paths.sWPaths)
{
    List<string> my = new List<string> { "qw", "er", "ty", "ui", "op", "as", "df", "gh", };
        List<string> found = Directory.EnumerateDirectories(desktop + "//")               
            Select(d => new DirectoryInfo(path).Name).Where(n => my.Contains(n)).ToList(); 
}

для использования в другом цикле

foreach (string p in found) // List<string> found //для использования здесь
{
       var pr = archive.CreateEntry("Found_" + p + ".txt");
}

Нужно передавать значения "byte[] memone" после каждой итерации

foreach (string path in Paths.sWPaths)
{             
      List<file> Informone = Data.Get(desktop + path);
      byte[] memone = cUtils.WriteOne(Informone).ToArray());   
}

чтобы использовать здесь

using (var entryStream = pr.Open())
{
        entryStream.Write(memone, 0, memory.Length) // byte[] memone
}

удалось через IEnumerable(благодаря CrazyElf) передать List found, но при передаче байтов происходит какая-то хрень, после каждой итерации данные в байтах разные, но я то ли передаю их криво, то ли криво записываю в архив. название текстового файла берется с List found, а данные в текстовых файлах с byte[] memone. так вот в чем проблема при передаче байтов если в архиве окажется больше одного текстового файла - то во все текстовые файлы запишется одно и то же, а так быть не должно

как должно быть: первая итерация цикла (foreach (string path in Paths.sWPaths)) - передача List и byte[] -> запись в архив, вторая итерация этого же цикла - передача List и byte[] -> запись в архив, и так далее, совпадений не должно быть, потому что List и byte[] после каждой итерации разныe


Ответы (1 шт):

Автор решения: CrazyElf

Что-то такое должно быть, если я правильно понял:

MemoryStream SomeFunc()
{
    foreach (string path in Paths.sWPaths)
    {             
          List<file> Informone = Data.Get(desktop + path);
          MemoryStream memoryone = new MemoryStream(cUtils.WriteOne(Informone).ToArray());   //MemoryStream memoryone
          yield return memoryone;
    }
}

...

using (var entryStream = pr.Open())
{
    foreach(var memoryone in SomeFunc())
    {
        memoryone.CopyTo(entryStream); // MemoryStream memoryone //для использования здесь
    }
}

Но чтобы это всё одновременно работало, нужно будет использовать многопоточность или асинхронность.

→ Ссылка