У меня есть файл журнала (.txt), в котором есть следующая информация:
Filename1 - A3332NCDER
Filename2 - B3332NCDER
Filename3 - B1222NCDERE
Filename4 - C1222NCDER
Filename4 - C1222NCDERE
Я записываю имя файла и соответствующий идентификатор в файл журнала, как показано ниже:
using (StreamWriter logFile = new StreamWriter(logFileName, true))
{
logFile.WriteLine(fileName + " - " + fileID);
}
Позже, чтобы получить ID, я делаю следующее:
char[] delimiters = new char[]{'\n','\r','-'};
IList<string> fileIDs = File.ReadAllText(logFileName)
.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
.Where((lineItem, index) => index % 2 == 1)
.Select(lineItem => lineItem.Trim())
.ToList();
Теперь для каждой обработки я добавляю дату и время, как показано ниже. Также в некоторых случаях идентификаторы могут быть кратными, которые разделяются запятой.
*****Files processing done at: 9/16/2011 11:30:48 AM *****
Filename1 - A3332NCDER
Filename2 - B3332NCDER
Filename3 - B1222NCDERE
*****Files processing done at: 9/16/2011 12:10:15 AM *****
Filename4 - C1222NCDER
Filename4 - C1222NCDERE,226222105A
Мне нужно выбрать ID в IList из приведенных выше данных? Один из способов, который я могу придумать, - это сначала разделить на \ n и \ r, а затем удалить пустые строки и строки, содержащие дату. Затем снова разделите на «-» и добавьте идентификаторы в список. Можно ли сделать это одним запросом linq