2017-02-23 4 views
1

Я заранее извиняюсь за это, но уже поздно, когда я нахожусь, и я устал. У меня есть простая проблема для решения, но я просто не могу ответить на этот вопрос. У меня есть два критерия: 1) найти файлы в каталоге, где имя файла соответствует определенному критерию, и 2) рассматривать файлы, которые имеют время создания на сегодняшний день. Есть много сообщений об обоих этих критериях, но никто из них не объединяет их. Вот код, который я вымыл вместе (будьте добры ко мне, пожалуйста).Поиск файла с выражением лямбда

string fooDay = DateTime.Now.ToString("dd"); 
string fooMonth = DateTime.Now.ToString("MM"); 
string fooYear = DateTime.Now.ToString("yyyy"); 
List<string> T340Basics = new List<string>(); 
T340Basics = Directory.GetFiles(@"\\10.0.0.73\shared\340B\340Basics\OUT\out_archive", @"340B_Captured_Claim_File*.txt").Where(a => (a.CreationTime.Month == fooMonth && a.CreationTime.Day == fooDay && a.CreationTime.Year == fooYear)).ToList(); 

This ошибки вне на CreationTime части лямбда-выражения, ошибка: строка не содержит определение для «не CreationTime'and не метод расширения„CreationTime“принимающую первый аргумент типа„строка“может быть найденным.

Как я уже сказал, я знаю, что это должно быть просто, я просто не могу понять это. Любая помощь будет высоко ценится.

+0

Вы не можете сделать «a.CreationTime.Date = DateTime.Now.Date'? –

+0

'fooDay' - это строка,' CreationTime.Year' - нет. Вы не можете сравнивать их с '==' – Guy

+0

Проблема в том, что ссылки на a.CreationTime дают мне ошибку, указанную в моем первоначальном описании. –

ответ

2

Вы можете использовать DirectoryInfo вместо статического Directory.GetFiles потому GetFiles (на DirectoryInfo) returnes в FileInfo[] вместо с string[].

Используйте это так:

DirectoryInfo info = new DirectoryInfo(@"\\10.0.0.73\shared\340B\340Basics\OUT\out_archive"); 

if(info.Exists) 
{ 
    info.GetFiles(@"340B_Captured_Claim_File*.txt", <OptionalSearchOption>).Where(file => file.CreationDate.Date == DateTime.Now.Date).ToList(); 
} 

Вы также можете сократить ваш шаблон, как это:

file => file.CreationDate.Date == DateTime.Now.Date 

Просто сравните две даты (устанавливает компоненты Время до 00: 00: 000 в обоих Объекты DateTime).

+0

проблема в том, что в этом каталоге имеется довольно много файлов, поэтому я хотел бы свести цикл к минимуму. Если info.GetFiles дает мне способ отфильтровать мои критерии, которые я написал выше, я хотел бы услышать об этом. –

+0

Просто попробуйте! Есть почти такие же параметры, как в 'Directory.GetFile()' вы также можете установить здесь 'SearchPattern' и некоторые' SearchOptions'. –

Смежные вопросы