你好,我有一个问题我有这个excel文件,我需要计算变量的总数,但这是可靠的在excel中的其他列。这样的:
<表类>
船
类型
杜
tbody><<tr>摩尔本 CASA 900 摩尔本 CASA 901 摩尔本 PANL 922 摩尔本 CASA 934 摩尔本 CASA 942 MSN是 PANL 1530 MSN是 PANL 1540 MSN是 CASA 1544 MSN是 CASA 1544 表类>
在我的快速查看期间,我没有找到任何方法枚举EPPlus中的行(我不使用它来读取,仅用于写入),让我们编写一个交互器,将使工作表成为命名ValueTuples的可枚举列表;这将使它们更容易使用,并且它们将隐式地分组为值类型:
Private Iterator Function SheetIterator(w As ExcelWorksheet, fromRow As Integer, toRow As Integer) As IEnumerable(Of (Shp As String, Typ As String, Dus As String))
For row = fromRow To toRow
Yield (Shp:=w.Cells(row, 1).Text, Typ:=w.Cells(row, 2).Text, Dus:=w.Cells(row, 3).Text)
Next
End Function
现在你有一个枚举表的设备,并返回值元组(对象有Shp
,Typ
和Dus
属性的值在你的行。这意味着您可以这样做:
SheetIterator(x, 1, 4) _
.GroupBy(Function(z) (z.Shp, z.Typ)) _
.Select(Function(g) (g.Key.Shp, g.Key.Typ, Ct:=g.Count()))
- 运行枚举表 的函数。
- 它将返回的对象分组,按Shp/type分组,因此您得到一个具有例如
("MOL BEN", "CASA")
键的对象,并且它本身是具有这些值对的每个对象的列表,因此它是一个包含4个对象的列表。在GroupBy
中最难接受的是返回就像List(Of EnhancedList(Of Something))
- 我们选择,它在外表上操作。外列表中的每个条目都别名为
g
,它有一个Key属性,表示我们分组的对象(一个代表Shp/type的对象),它本身是一个共享该Shp/type的所有对象的列表;除了count it ,我们对这个列表不做任何操作
因此输出是另一个具有Shp, type和Ct (count)属性的对象,并且整个序列最终看起来像
("MOL BEN", "CASA", 4)
("MOL BEN", "PANL", 2)
...