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如何获得具有特定条件的值的主要内容,如果未能解决你的问题,请参考以下文章

如何获得列表大小 em VB .NET?

如何获得具有指定 where 条件的所有多对一行?

vb.net中如何获得DataGridView单元格内容

如何在对象数组中查找具有特定名称的值

如何在复杂条件下获得特定字符

Bigquery - 如何过滤具有特定条件的记录