У меня есть результат запроса к базе данных:
IEnumerable<ResultRecord> results_from_db_call = Db.GoGetItNow();
Теперь предположим, что возвращенный класс выглядит так:
public class ResultsRecord
{
public string DataBlob { get; set; }
public int FirstID { get; set; }
public int SecondNum { get; set; }
public DateTime ThirdDate { get; set; }
public string FourthTime { get; set; }
public string FifthTime { get; set; }
}
Теперь возвращаемые записи результатов содержат только набор членов DataBlob.
Это вполне может выглядеть так:
<IK/12322>1354654 16/MAY/2014 18:01:01 - 20:01:01
Итак, мне нужно заполнить других членов, и я хотел бы сделать это с делегатом «Каждый»:
results.Each(f => f.FirstID = int.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.SecondNum = int.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.ThirdDate = DateTime.Parse(Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.FourthTime = Regex.Match(f.DataBlob, @"\d+").Value));
results.Each(f => f.FifthTime = Regex.Match(f.DataBlob, @"\d+").Value));
Ну, как вы понимаете, это регулярное выражение работало только с первым целым числом.
Но ждать! У меня есть работающее регулярное выражение, чтобы найти все нужные мне группы:
(\d+)\>(\d+) (\d+\/[a-zA-Z]+\/\d+) (\d+\:\d+\:\d+) - (\d+\:\d+\:\d+)
Это успешно группирует все элементы, которые мне нужны.
Но вот вопрос: как получить второй элемент группы регулярных выражений для SecondNum, третий элемент группы регулярных выражений для ThirdDate, четвертый элемент группы регулярных выражений для FourthTime и пятый элемент группы регулярных выражений для FifthTime?
Когда я пытаюсь
(\d+)\>(\d+) (\d+\/[a-zA-Z]+\/\d+) (\d+\:\d+\:\d+) - (\d+\:\d+\:\d+){0}
Я не получаю первый (нулевой) элемент.
Как я могу вызвать регулярное выражение, чтобы получить первый и т. д. элемент из групп?
results.Each(f => f.SecondNum = int.Parse(Regex.Match(f.DataBlob, @"????").Value));