LINQ как получить имя файла содержащее конкретное значение
У меня есть программа, которая должна возвращать только одно имя файла, и это зависит от того, содержит ли имя файла определенную строку. Я могу перечислять файлы из каталога, но я получаю
System.Linq.Enumerable+WhereSelectEnumerableIteratдля выбора вместо фактического имени файла. В папке у меня есть файлы с именем :
GL_Export_54_201908220333.xml
GL_Export_55_201907081053.xml
GL_Export_56_201908220337.xml
GL_Export_78_201907081055.xml
Код :
<pre>string period = "55"; var batchperiod = period.ToString(); string BatchInPath = @"C:\Users\myuser\source\repos\MySolution\MyProject\BatchIn"; IEnumerable<string> fileList = Directory.EnumerateFiles( BatchInPath); var CurrentBatchName = from file in fileList let fileName = Path.GetFileName(file) where fileName.Contains(batchperiod) select fileName.ToString().First(); Console.WriteLine(CurrentBatchName)
Так же и с batchperiod как указано выше:
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
GL_Export_55_201907081053.xml
ФАКТИЧЕСКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ
System.Linq.Enumerable+WhereSelectEnumerableIterat
Что я уже пробовал:
<pre> string period = "55"; var batchperiod = period.ToString(); string BatchInPath = @"C:\Users\myuser\source\repos\MySolution\MyProject\BatchIn"; IEnumerable<string> fileList = Directory.EnumerateFiles( BatchInPath); var CurrentBatchName = from file in fileList let fileName = Path.GetFileName(file) where fileName.Contains(batchperiod) select fileName.SingleOrDefault(); Console.WriteLine(CurrentBatchName)
Maciej Los
Ваше требование не совсем ясно. Пожалуйста, прочтите все ответы, чтобы узнать почему, особенно ответ, предоставленный @phil.o.