【发布时间】:2017-01-19 08:19:46
【问题描述】:
我正在尝试获取 LINQ 查询返回的项目的计数。我会假设它是 .Count 但显然不是。
我正在从 Excel 加载一个 DataTable,然后根据标识符获取不同的行。我现在正在尝试计算退回的物品数量。 Leases 包含我想要计数的行的数据。我尝试了一些事情(现在已注释掉)但没有成功。
也许 LINQ 专家可以帮助我?
这是我的代码:
Dim Leases As Object
Dim dtData As System.Data.DataTable = LoadExcelAsDb(oFile.FullName)
Try
' How many leases are there
Leases = From row In dtData.AsEnumerable() Select row.Field(Of Object)("F2") Distinct
' LeaseCt = New System.Linq.SystemCore_EnumerableDebugView(Of Object)(Leases).Items.count
' LeaseCt = New System.Linq.Enumerable(Of Object)(Leases).Items.count
' LeaseCt = Leases.Count
Catch ex As Exception
Debug.WriteLine("Error reading files" + ex.ToString)
End Try
''' <summary>
''' Loads an excel file as a datatable
''' </summary>
''' <param name="sFilename">Filename of excel to be loaded </param>
''' <returns>Populated Datatable</returns>
Private Function LoadExcelAsDb(sFilename As String) As System.Data.DataTable
' Connect to Excel get table
Dim oConnection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFilename + " ; Extended Properties=Excel 12.0;")
Dim oCommand As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", oConnection)
Dim DtSet As System.Data.DataTable = New System.Data.DataTable
Try
oCommand.Fill(DtSet)
Catch ex As Exception
Debug.WriteLine("Error reading files" + ex.ToString)
End Try
Return DtSet
End Function
【问题讨论】:
-
Leases将是一个“内存查询”——在你执行之前它不会有计数。LeaseCt = (Leases).Count()将为您提供 that 查询的计数 -
LeaseCt = Leases.ToList().Count() -
当我尝试 Leases.ToList().Count() 时,我收到一条错误消息,提示 Tolist 不可用
-
当我尝试 LeaseCt = (Leases).Count() 时,我收到错误“未找到类型 'Integer' 的公共成员 'Count'。”