>我有这个:
Public Sub AssignDT(data_tables As Dictionary(Of String, DataTable))
Dim ApplicationDT = data_tables("Application")
End Sub
现在,此数据表包含一些值为大写字符串"FALSE"或"TRUE"的列。是否有一个 lambda 函数可用于将所有这些值替换为 c# 或 vb .net 中的小写对应方?
在 Python 中,对于数据帧,我像这样得到它,使用数据帧的字典和替换函数:
booleanDictionary = {'TRUE': 'true', "FALSE": 'false'}
Application = data_frames['Application'].astype(object).replace(np.nan,
'').replace(booleanDictionary)
尝试这样的事情:
Friend Module Main
Public Sub Main()
Dim oCol As DataColumn
Dim oRow As DataRow
Using oTable As New DataTable
oCol = New DataColumn
oTable.Columns.Add(oCol)
oRow = oTable.NewRow
oRow(0) = "FALSE"
oTable.Rows.Add(oRow)
Console.WriteLine(oRow(0))
oTable.Select.ToList.ForEach(Sub(Row) Row(0) = CStr(Row(0)).ToLower)
Console.WriteLine(oRow(0))
End Using
Console.Read()
End Sub
End Module
输出:
FALSE
false
--编辑--
如果我们没有关于列的信息,我们可以遍历行的项目并测试我们需要的值。
Friend Module Main
Public Sub Main()
Dim oColumns As List(Of DataColumn)
Dim oRows As List(Of DataRow)
Dim oRow As DataRow
Using oTable As New DataTable
oTable.Columns.Add(New DataColumn("Weight", GetType(Integer)))
oTable.Columns.Add(New DataColumn("IsHeavy", GetType(String)))
oRow = oTable.NewRow
oRow(0) = 123
oRow(1) = "False"
oTable.Rows.Add(oRow)
oColumns = oTable.Columns.Cast(Of DataColumn).Where(Function(Column) Column.DataType = GetType(String)).ToList
Console.WriteLine(oRow(1))
oRows = oTable.Select.ToList
oRows.ForEach(Sub(Row)
oColumns.ForEach(Sub(Column)
If Boolean.TryParse(oRow(Column.Ordinal), Nothing) Then
Row(Column.Ordinal) = CStr(oRow(Column.Ordinal)).ToLower
End If
End Sub)
End Sub)
Console.WriteLine(oRow(1))
End Using
Console.ReadKey()
End Sub
End Module
VB.Net 的例子,但不是LAMBA:
Public Sub AssignDT(data_tables As Dictionary(Of String, DataTable))
Dim ApplicationDT = data_tables("Application")
For Each rw As DataRow In ApplicationDT.Rows
For i As Int16 = 0 To ApplicationDT.Columns.Count - 1
If ApplicationDT.Columns(i).DataType = GetType(String) Then
If rw(i) = "FALSE" Then
rw(i) = "false"
ElseIf rw(i) = "TRUE" Then
rw(i) = "true"
End If
End If
Next
Next
End Sub
或者
If rw(i) = "FALSE" OrElse rw(i) = "TRUE" Then rw(i) = rw(i).ToString.ToLower()
假设dataTable
是一个System.Data.DataTable
,这会将列columnname
的所有值设置为小写。
dataTable.Select().ToList().ForEach(x => x["columnname"] = x["columnname"].ToString().ToLower());