vb.net如何获得具有特定条件的值
Posted
技术标签:
【中文标题】vb.net如何获得具有特定条件的值【英文标题】:vb.net how to get a value with specific condition 【发布时间】:2016-09-30 07:02:04 【问题描述】:提前致谢。查了,还是不知道怎么写。
[前提]
我得到了一个表的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") ]
部分可能不正确
我想知道正确的编码。
谢谢!
【问题讨论】:
【参考方案1】:我现在无法重现它,但是:
循环每一行并将名称添加到列表中:
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
【讨论】:
非常感谢!我有不同的想法~~~我会参考一下【参考方案2】:你可以像这样使用 Linq to 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
【讨论】:
以上是关于vb.net如何获得具有特定条件的值的主要内容,如果未能解决你的问题,请参考以下文章