vb.net如何获取具有特定条件的值

时间:2016-06-01 04:54:20

标签: vb.net if-statement conditional-statements dataview

提前致谢。我搜索但仍然不知道如何写。

[前提] 我得到了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。 我也按顺序对表格进行了排序。 当[code1 = 12,例如]的记录号大于2时, 我想在ASC中获得这两个名字。

[ Item(0).Item("Name") ]部分可能不正确 我想知道正确的编码。

谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:0)

您可以将Linq用于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