Таким образом, вы можете использовать LINQ и написать что-то вроде этого
DataTable.Rows.ToList().ForEach(r => Console.WriteLine(String.Format("Row {0}: FNAme = {1}, LName = {2}", dr.Rows.IndexOf(r) + 1, r.Item["FName"], r.Item["LName"])
Но для того, что вы делаете, цикл foreach
имеет больше смысла
//Borrowing Dustin Lanes foreach here.
StringBuilder sb = new StringBuilder();
foreach (DataRow dr in DataTable.Rows)
{
sb.Append(String.Format("Row {0}: FNAme = {1}, LName = {2}", dt.Rows.IndexOf(row) + 1, dr["FName"], dr["LName"]));
}
Причина, по которой яскажем, что цикл foreach имеет больше смысла в том, что он понятнее того, что вы делаете.Реализация проще.
LINQ великолепен, но я стараюсь использовать его только тогда, когда он дает более четкое представление о том, что я делаю.Честно говоря, он становится де-факто ответом на все, что связано с любым кодом, связанным с коллекциями, и иногда это не ответ.