2016-06-01 17 views
1

Vielen Dank im Voraus. Ich habe gesucht, kann aber immer noch nicht schreiben.vb.net Wie bekomme ich einen Wert mit bestimmten Bedingung

[Prämisse] Ich habe eine DataView einer Tabelle, und gefiltert und sortiert es.

[Tabelle] [Nach dem Filtern wird die Tabelle wie folgt aussieht: ↓]

enter image description here

Ich mag die Namen unter verschiedenem Zustand erhalten. Ich schrieb so, aber es scheint nicht korrekt.

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 

Mein Hauptziel ist es, die verschiedenen Namen zu erhalten nach verschiedenen Code 1. ich die Tabelle nach Bestellung als auch sortiert. Wenn die Datensatznummer von [code1 = 12, zum Beispiel] ist mehr als 2, Ich möchte die beiden Namen in der Reihenfolge ASC erhalten.

Der Teil möglicherweise falsch Ich möchte die richtige Codierung kennen.

Vielen Dank!

Antwort

0

Ich kann es nicht reproduzieren gerade jetzt, aber:

Schleife jede Zeile und fügen Sie die Namen auf Listen:

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

Danke sooooo sehr! Ich habe eine andere Idee ~~~ Ich werde mich darauf beziehen – sleepinglatte

0

Sie Linq verwenden können, wie zum Datatable:

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