#vb.net
#vb.net
Вопрос:
Проверьте, есть ли у datatable строка в выбранном индексе, используя цикл for
я хочу проверить здесь, имеет ли datatable строку с тем значением ‘i’, которое исходит из цикла
Private Sub btnAct_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAct.Click
Gross = 0
Dim i As Integer
Dim dr As DataRow = Nothing
Act1 = dt.Rows(0)("Account")
Act2 = dt.Rows(0)("Account")
'Next
For i = 0 To 100 Step 1
If ( i Want to check here if datatable has row at that value of 'i' which comes from loop) Then
else
If (Act1 = Act2) Then
Else
Act1 = dt.Rows(i - 1)("Account")
For k As Integer = 0 To (i - 1) Step 1
Act2 = Convert.ToString(dt.Rows(k)("Account"))
If (Act1 = Act2) Then
Gross = Convert.ToInt32(dt.Rows(k)("Total_Gross_Amount"))
End If
Next
dr = dt.NewRow()
dr("Account") = "Total"
dr("Total_Gross_Amount") = Gross
Gross = 0
dt.Rows.InsertAt(dr, i)
Act2 = Convert.ToString(dt.Rows(i 1)("Account"))
End If
Act1 = Convert.ToString(dt.Rows(i 1)("Account"))
dt(i)("Sno") = i 1
Next
End If
'Next
End Sub
У меня есть datatable, и я хочу проверить, что в нем есть строка с выбранным значением, которое поступает из цикла for
Комментарии:
1. отформатируйте свой вопрос, чтобы лучше понять, дайте более подробное описание
2. я хочу проверить datatable в цикле for, у которого конец равен 100, я хочу проверить, есть ли в таблице данных строка с этим значением, если она не имеет значения в этом индексе, тогда она проверит и выйдет, иначе она будет работать
3.
if dt.rows(i).item("columnName") <> 0
илиif dt.rows(i).item("columnName") <> "
Ответ №1:
Просто — LINQ на помощь:
For i = 0 To 100
' Functionally equivalent to
' dt.Rows.Cast(Of DataRow)().ElementAtOrDefault(i).
Dim rowAtIndex = dt.AsEnumerable().ElementAtOrDefault(i)
If rowAtIndex IsNot Nothing Then
' Do something with the row.
End If
Next
Или немного менее выразительную, но лучше оптимизированную версию:
For i = 0 To 100
Dim rowAtIndex As DataRow = Nothing
If i < dt.Rows.Count Then
rowAtIndex = dt.Rows(i)
' Do something with the row.
Else
' Row at index does not exist.
End If
Next
Однако здесь возникает большой вопрос: действительно i
ли нужно выходить за dt.Rows.Count - 1
рамки (который является индексом последней строки в DataTable
)? Если нет, я бы предпочел изменить цикл на
For i = 0 To dt.Rows.Count - 1
Комментарии:
1. на самом деле сначала я делал для i = 0 до dt.rows.count-1, но во время выполнения возникла проблема: количество строк в datatable увеличивается, но в цикле оно принимает значение, которое было во время компиляции до нажатия кнопки, например, datatable имеет 25 строк после нажатия кнопки в for строки цикла увеличиваютсядо 35 , но цикл насчитывает только до 25, поэтому он редактирует только 25 строк, а остальные строки такие же, как и были. я выполнил эту задачу на c # с помощью dt.rows.count-1, она работала, но я не знаю, в чем проблема vb.net . @Кирилл Шленский