2012-03-04 3 views
0

Я помогаю кому-то исправить приложение VB, но боюсь немного синтаксиса.VB.NET для каждого через DataLayer

У меня есть следующие:

Dim _dt = Datalayer.ConvertSqlDataSourceToDataTable(SqlDataSourceCart) 
If _dt.Rows.Count > 0 Then 
    'For Each here... 
End If 

Что мне нужно сделать, это цикл по каждой строке используя для или для каждого цикла и получить поле ProductID. Я думаю, что это должно быть вдоль линий:

Dim someString As String 
For Each _row As DataRow In _dt.DataSet.Tables(0).Rows 
    someString += _row(ProductID) & ", " 
Next 
+0

I изменил его на просто _dt.Rows и он работает – MattP

ответ

1

Предполагая _dt является alrady типа DataTable:

Dim someStringBuilder As New System.Text.StringBuilder() 
For Each _row As DataRow In _dt.Rows 
    someStringBuilder.Append(_row.Field(Of String)("ProductID")).Append(",") 
Next 
If someStringBuilder.Length<>0 Then someStringBuilder.Length -= 1 
Dim someString = someStringBuilder.ToString() 

или, если вы можете использовать LINQ-To-DataSet:

Dim IDs = _dt.AsEnumerable.Select(Function(r) r.Field(Of String)("ProductID")) 
someString = String.Join(",", IDs) 
+0

Да, это _dt.Rows, который его исправил. благодаря – MattP

Смежные вопросы