Ну, в этом случае вы присваиваете новое значение на каждой итерации в любом случае , без использования "старого" значения - поэтому я бы использовал:
foreach (var item in photos)
{
buffer = t.NewRow();
int h = item.IndexOf("\\x\\");
buffer["name"] = item.Substring(h, item.Length - h);
t.Rows.Add(buffer);
}
Я считаю, что если я сделаю это настолько агрессивно, насколько смогу (в пределах разумного, конечно), у меня не будет больших проблем с ограничением объема работ - и если я это сделаю, это, вероятно, означает, что метод слишком длинный и В любом случае, я должен рефакторинг.
Смею сказать, что это может быть полезно в старом стиле C - но когда я пишу C #, я не вижу причин делать вещи, которые полезны в C, но не улучшают мой C #:)