Когда вы запускаете это:
Console.WriteLine(table.Rows[0]);
Это фактически вызывает это:
Console.WriteLine(table.Rows[0].ToString()); // prints object type, in this case a DataRow
Если бы это был ваш собственный класс, вы могли бы переопределить ToString дляверните все, что вам нужно, но у вас нет этой опции с классом DataRow
.И поэтому он использует поведение по умолчанию, как описано здесь :
Реализации по умолчанию метода Object.ToString возвращают полностью определенное имя типа объекта.
Вы можете перебирать столбцы, например, так:
var row = table.Rows[0];
for (var i = 0; i < row.Count; i++)
Console.Write(row[i] + " : ");
Или, более короткий способ распечатать их все:
Console.WriteLine(String.Join(" : ", table.Rows[0].ItemArray));
Учитывая ваши данные, возможно, выпросто хотите сослаться на два поля?
foreach (DataRow row in dt.Rows)
Console.WriteLine($"You have {row[0]} {row[1]}(s).");
// You have 4 Horse(s).
// You have 10 Moose(s).