【问题标题】:Pass single column of dataTable to function in vb.net将数据表的单列传递给 vb.net 中的函数
【发布时间】:2021-12-01 03:40:10
【问题描述】:

我有一个包含 5 行和 2 列(Id、Name)的数据表。我需要将数据表中只有一列 (Id) 的 5 行传递给作为数据表的函数参数。

这是我尝试过的

myfunction(dt.Rows.Item("Id")

Public function myfunction (dt as dataTable)
// Some code

End Function

但这不起作用。为什么会这样?即使排除列,dataTable 仍保留为 dataTable。如何在不包含“名称”列作为参数的情况下将“ID”列传递给该函数。

【问题讨论】:

    标签: vb.net datatable


    【解决方案1】:

    您提供的内容存在几个问题。

    首先,您的函数调用末尾缺少括号。

    myfunction(dt.Rows.Item("Id"))
    

    其次,您的函数需要一个数据表,但您正在传递一个单元格(也没有指定哪一行,所以这不起作用)...

    如果你真的希望你的函数使用数据表,你只需要像这样传递 dt:

    myFunction(dt)
    

    如果您想传递单元格值,您可以更改函数定义以获取字符串或该列中的任何数据类型,并传递如下值:

    myFunction(dt.Rows(ROWNUMBER).Item("Id"))
    

    【讨论】:

    • 我需要dataTable中的所有行,只有一列“Id”
    • 只需传递整个数据表,然后在您的函数中仅使用来自所需列的数据,例如For Each row As DataRow In dt.Rows <do whatever you want with row("<columnname">)> Next。向我们展示您打算在函数中使用数据表的内容。
    【解决方案2】:

    函数需要DataTypeReturn 语句。

    您的函数需要 DataTable,而您正在传递 DataRow

    dt.Rows.Item 采用 Integer,而不是 String

    Dim 不是 Function,你叫它。

    Stack Overflow 要求您提供一个最小、完整且可重现的问题示例。你的代码不是这样的。

    我给了你的函数一个名字和一些微不足道的事情,这样我就可以演示正确的语法。如果您不需要整个 DataTable,则不要将其传递给函数。我只是将 ID 列中的值作为 List(Of T) 传递

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim lst = dt.Rows.OfType(Of DataRow)().Select(Function(dr) dr.Field(Of Integer)("ID")).ToList()
        Dim MaxID = GetMaxID(lst)
    End Sub
    
    Public Function GetMaxID(lst As List(Of Integer)) As Integer
        Dim MaxI = lst.Max
        Return MaxI
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多