提前致谢。我搜索但仍然不知道如何写。
[前提]
我得到了DataView
表,并对其进行了筛选和排序。
[表] [过滤后,表格如下:↓]
我希望在不同条件下获取名称。 我这样写的但似乎不正确。
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") ]
部分可能不正确
我想知道正确的编码。
谢谢!
答案 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