2016-06-01 43 views
1

感謝。我搜索,但仍不知道如何寫。vb.net如何事先與特定條件得到一個值

[前提] 我得到了一張表的DataView,並對其進行了過濾和排序。

[表] [過濾後,表格如下所示:↓]

enter image description here

我想不同條件下的名字。 我這樣寫,但似乎不正確。

If dv_Table1.Select("Code1 = '11'").Rows.Count > 0 Then 
    drwWork.Item("Name") = dv_Table1.Item(0).Item("Name") 

ElseIf dv_Table1.Select("Code1 = 12").Rows.Count > 0 Then 
    drwWork.Item("Name") = dv_Table1.Item(0).Item("Name") 
     If dv_Table1.Item(0).Item("Code2") = 1 Then 
     drwWork.Item("Code") = Asterisk 
     Else 
     End If 
Else 
End If 

我的主要目標是根據不同的代碼1. 以獲得不同的名字,我的順序排序表也。 當記錄數[代碼1 = 12,例如]大於2, 我想爲了ASC兩個名字。

[ Item(0).Item("Name") ]部分可能不正確 我想知道正確的編碼。

謝謝!

回答

0

我現在不能重現,但:

循環每一行並添加名稱列表:

Dim view = New DataView() 
Dim list11 As New List(Of String) 
Dim list12 As New List(Of String) ' You could make an array of List too 

For Each row As DataRowView In view 
    If row.Item("Code1").Equals(11) Then ' "11" If it's a string 
     list11.Add(row.Item("Name")) 
    ElseIf row.Item("Code1").Equals(12) Then ' "12" If it's a string 
     list12.Add(row.Item("Name")) 
    End If 
Next 
+1

謝謝sooooo多!我有一個不同的想法~~~我會參考它 – sleepinglatte

0

您可以使用LINQ到數據表,如:

Dim dt As DataTable = DirectCast(dv_Table1.DataSource, DataTable) 

    Dim results1 = From myRow In dt.AsEnumerable() Where myRow.Field(Of [String])("Code1").Equals(11) Or myRow.Field(Of [String])("Code1").Equals(12) 
    Dim dt1 As DataTable = results1.CopyToDataTable() 

    For Each dw As DataRow In dt1.Rows 
     drwWork.Item("Name") = dw.Item("Name") 
     If dw.Item("Code2") = 1 Then 
      drwWork.Item("Code") = Asterisk 
      TableName.Rows.Add(drwWork) 'drwWork is a new row of an other datatable "TableName" for exemple 
    Next