У меня есть некоторые подкаталоги, которые называются с датами, как так:C# DateTime.ParseExact с обратными косыми чертами в формате
C:\SomeDirectory\201309\01
C:\SomeDirectory\201309\02
C:\SomeDirectory\201309\03
C:\SomeDirectory\201309\04
C:\SomeDirectory\201309\05
т.д.
То, что я пытаюсь сделать, это получить каталог а затем использовать Linq для ограничения моих результатов на основе диапазона дат.
Я получил это работает так:
string path = @"C:\SomeDirectory";
DateTime f = new DateTime(2013, 9, 1);
DateTime t = new DateTime(2013, 9, 3);
DateTime dt;
var dirs =
Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories)
.Where(d => DateTime.TryParseExact(
d.Substring(Math.Max(0, d.Length - 9)).Replace("\\", null),
"yyyyMMdd",
CultureInfo.Invarient,
DateTimeStyles.None,
out dt)
&& f <= dt
&& dt <= t);
Я бы, однако, хотел изменить часть TryParseExact так, что я не должен заменить обратную косую черту - например, так:
DateTime.TryParseExact(
d.Substring(Math.Max(0, d.Length - 9)),
@"yyyyMM\dd",
CultureInfo.Invarient,
DateTimeStyles.None,
out dt)
Но, кажется, TryParseExact не нравится этот формат. Я думал, что это может иметь какое-то отношение к CultureInfo, но я не смог найти возможное решение, чтобы помочь мне с обратной косой чертой.
Любая помощь была бы принята с благодарностью!
Вы пробовали двойную обратную косую черту? Обратная косая черта - это особый символ, который использует форматирование 'DateTime'. Я считаю, что больше информации [здесь] (http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx). –
Вы также можете попробовать использовать значение символа обратной косой черты (найти его в таблице ASCII) – NDraskovic
Почему вы не ищете только один каталог под 'SomeDirectory'? Или вы можете сначала проверить: 'Где (d => d.Length == 6 && d.All (Char.IsDigit))' –