Мне нужно перебрать DataTable
. У меня там есть столбец с именем ImagePath
.
Когда я использую, DataReader
я делаю это так:
SqlDataReader dr = null;
dr = cmd.ExecuteReader();
while (dr.Read())
{
TextBox1.Text = dr["ImagePath"].ToString();
}
Как я могу добиться того же, используя DataTable
?
Ответы:
DataTable dt = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); foreach(DataRow row in dt.Rows) { TextBox1.Text = row["ImagePath"].ToString(); }
... предполагает, что соединение открыто и команда настроена правильно. Я также не проверял синтаксис, но он должен дать вам представление.
источник
linq
решение и задается вопросом, где находится(cmd)
вышеуказанное решение?cmd
это SQL-команда для выполнения. Если вы используете LINQ, вы должны написать свой запрос LINQ и таким образом получить свои результаты.foreach (DataRow row in myDataTable.Rows) { Console.WriteLine(row["ImagePath"]); }
Пишу это по памяти.
Надеюсь, это даст вам достаточно подсказок, чтобы понять объектную модель.
DataTable
->DataRowCollection
->DataRow
(который можно использовать и искать содержимое столбца для этой строки, используя имя столбца или порядковый номер).-> = содержит.
источник
Вы также можете использовать расширения linq для DataSets:
var imagePaths = dt.AsEnumerble().Select(r => r.Field<string>("ImagePath"); foreach(string imgPath in imagePaths) { TextBox1.Text = imgPath; }
источник
AsEnumerable()
дляDataTable
вас, необходимоSystem.Data.DataSetExtensions
добавить в качестве зависимости.Приведенные выше примеры весьма полезны. Но если мы хотим проверить, имеет ли конкретная строка определенное значение или нет. Если да, то удалите и прервите, а в случае, если значение не найдено, выбросить ошибку. Ниже код работает:
foreach (DataRow row in dtData.Rows) { if (row["Column_name"].ToString() == txtBox.Text) { // Getting the sequence number from the textbox. string strName1 = txtRowDeletion.Text; // Creating the SqlCommand object to access the stored procedure // used to get the data for the grid. string strDeleteData = "Sp_name"; SqlCommand cmdDeleteData = new SqlCommand(strDeleteData, conn); cmdDeleteData.CommandType = System.Data.CommandType.StoredProcedure; // Running the query. conn.Open(); cmdDeleteData.ExecuteNonQuery(); conn.Close(); GetData(); dtData = (DataTable)Session["GetData"]; BindGrid(dtData); lblMsgForDeletion.Text = "The row successfully deleted !!" + txtRowDeletion.Text; txtRowDeletion.Text = ""; break; } else { lblMsgForDeletion.Text = "The row is not present "; } }
источник