В комментарии вы упомянули, что получаете сообщение об ошибке:
не может применить индексирование с помощью [] к выражению типа объекта
при попытке доступа к item["tag"]
в цикле foreach.
Вам необходимо явно объявить DataRow
в foreach.
// declare DataRow here, not var
foreach (DataRow item in table.Rows)
{
// use item here
Value = item["tag"].ToString(); // use += to concatenate string
}
Причина в том, что DataRowCollection
реализует неуниверсальный IEnumerable
, поэтому вы индексируете object
вместо DataRow
. Приведенное выше решение приводит к DataRow
.
Я бы порекомендовал посмотреть методы Field<T>()
и AsEnumerable()
из System.Data.DataSetExtensions
. AsEnumerable () возвращает IEnumerable<DataRow>
. Поле () обеспечивает строго типизированный доступ к значениям (т. Е. Он преобразует / преобразовывает типы для вас).
Тогда вы можете сделать:
foreach (var item in table.AsEnumerable())
{
// item is a DataRow here
var myString = item.Field<string>("tag"); // gets string
// you can also do
var myInt = item.Field<int>("Id"); // gets int
var myDate = item.Field<DateTime?>("Date"); // gets nullable DateTime?
var myValue = item.Field<decimal>("Price"); // gets decimal
}