我想选择数据集中的所有列。数据集从数据库表派生。
这是我的代码:
lstvCustomers.Items.Clear()
Dim result = (From cust In dsCust.Tables(0).AsEnumerable).ToList
'When i set where clause condition (Where cust.Field(Of String)("Ccd").Contains(txtCustID.Text))
' error occured in bellow line Error : The source contains not datarow
Dim custTable As DataTable = result.CopyToDataTable
lstvCustomers.Columns.Clear()
For cls As Integer = 1 To custTable.Columns.Count - 1
lstvCustomers.Columns.Add("COl - " & cls)
Next
Dim i As Integer = 0
For Each row In custTable.Rows
Dim lst As ListViewItem = lstvCustomers.Items.Add(row(0))
For cls As Integer = 1 To custTable.Columns.Count - 1
lst.SubItems.Add(row(cls))
Next
i = i + 1
Next
输出
Col1 COl2 COl3 COL4 Col5 COl6 COL7
客户101 客户101 真正的客户101 客户101 客户101 客户101 232323
我想从数据集中选择所有列。帮帮我。
尝试:
Dim qry = (From cust In custTable.AsEnumerable
Where cust.Field(Of String)("Ccd").Contains(txtResults.Text)
Select cust).ToList
这会将与条件匹配的每个数据行作为数据行列表返回,您可以在其中根据需要访问每个字段。
要将行添加到列表视图,请尝试以下操作:
For Each row In qry
lstvCustomers.Items.Add(row.Field(Of String)("Ccd")).SubItems.Add(row.Field(Of String)("Cnm"))
Next
我搜索了四次以上的Google搜索)以寻找解决方案,最后我最终收集到(上图)LINQ不执行删除 - 因此您使用LINQ选择要删除的行,并通过正在使用的数据库技术的"常规"机制删除它们。似乎使所有关于 LINQ 的与数据库无关的宣传变得非常愚蠢?这个至少可以工作,尽管我将使用两个"For Each"循环,看看是否可以将其减少到一个。我有一个属性表,我想删除对象类型(第一个键字段)的所有具有选定属性名称(第三个键字段)的条目,我想出了这个。仅供参考,REPLY 对象有点像错误对象 - 我只是打包错误消息、二进制 Pass/fail 标志和其他一些东西,这样我就可以从查询中传回大量东西并(最终)向用户显示错误。
' <summary>
' The user has decided they don't want a particular property type so we delete all
' properties of that type in the table - belonging to any object of that ObjectType
' </summary>
' <param name="sObjectType"></param>
' <param name="sName"></param>
' <returns></returns>
' <remarks></remarks>
Public Function DeleteAllPropsByName(sObjectType As String, sName As String) As Reply
DeleteAllPropsByName = New Reply(True)
Dim T As DataTable = mDB.DataTableImage(msTableName)
Dim q = From rw In T.AsEnumerable
Where rw.Field(Of String)("ObjectType") = sObjectType _
And rw.Field(Of String)("PropName") = sName
' Somewhere to remember our list of target rows to delete
Dim rows As New List(Of DataRow)
For Each row In q
'
' LINQ doesn't delete so we need to delete from the Datatable directly.
' If we delete here we get the collection modified error so we have to save
' the datarows to ANOTHER list and then delete them from there.
rows.Add(row)
Next
For Each rw As DataRow In rows
'
' Call the Delete routine in my table class passing it the
' primary key of the row to delete
'
DeleteAllPropsByName = gDB.Table(msTableName).Delete( _
rw.Item("ObjectType").ToString, _
CInt(rw.Item("ObjectID")), _
rw.Item("PropName").ToString)
If Not DeleteAllPropsByName.OK Then
' The reply object (in DeleteAllPropsByName) has all the error info so we can just
' exit and return it if the delete failed.
Exit Function
End If
Next
End Function
lstvCustomers.Items.Clear()
Dim result = (From cust In dsCust.Tables(0).Select("Ccd LIKE '%" & txtCustID.Text & "%'")).ToList
Dim clm As Integer = 0
For Each row As DataRow In result
lstvCustomers.Items.Add(row(0))
lstvCustomers.Items(clm).SubItems.Add(row(1))
clm = clm + 1
Next