StreamWriter через Linq
У меня есть массив файлов, для которых нужно производить запись/удаление текста.
string[] arrayMass = new string[] { "file1.txt", "file2.txt", "file3.txt" };
using (StreamWriter writer = new StreamWriter("people.txt", true))
{
writer.WriteLine("");
}
Как мне вместо "people.txt" подставить массив arrayMass не используя цикл for и foreach, а сделать через LINQ?
Ответы (1 шт):
А чем вас цикл foreach не устраивает? И нет, в Linq нету того что вам нужно. Последняя буква LINQ - "Q" означает "Query", то есть "запрос", а запрос должен что-то возвращать. Ваш код не возвращает ничего, следовательно это не "запрос".
Если вы имеете в виду под Linq паттерн Fluent Interface с делегатами, то у List<T> есть метод .ForEach, который кстати не Fluent, потому что ничего не возвращает void. В случае с массивом, вы можете написать метод расширения сами.
public static class ArrayExtensions
{
public static void ForEach<T>(this T[] array, Action<T> action)
{
foreach (T item in array)
{
action(item);
}
}
}
Это точный аналог того что есть у List<T>.
И вот так использовать.
string[] arrayMass = new string[] { "file1.txt", "file2.txt", "file3.txt" };
arrayMass.ForEach(x =>
{
using (StreamWriter writer = new StreamWriter(x, true))
{
writer.WriteLine("");
}
});
Только я в этом никаких преимуществ перед обычным foreach циклом не вижу. А вы?
Кстати, если вам нужно создать пустой файл и ничего туда не писать, это можно сделать так File.Create(path).Close();.