对象集合中的属性计数

时间:2017-02-27 10:53:38

标签: c# list collections count

我正在努力解决这个问题。

我有一个类,用于在电子表格中存储每个单元格的单元格信息。

public class Datacollection 
{
    public int rowNumber { get; set; }
    public string colName { get; set; }
    public string colValue { get; set; }
}

在其他地方,我然后加载excel电子表格作为这些对象的集合

private static List<Datacollection> _dataCol = new List<Datacollection>();

我正在加载的电子表格有3列和3000行,因此我的集合的大小是9000.电子表格中每个单元格的一个Datacollection对象。

如何从此系列中获取行数?我想我需要'rowNumber'的最高值,但我不知道如何获得这个值。

非常感谢,

2 个答案:

答案 0 :(得分:2)

如果行号是连续的并且从1开始,您只需使用LINQ的Max扩展名:

var rowCount = _dataCol.Max(cell => cell.rowNumber);

但如果它们的确以任意数字开头而不是1,或者行数中存在间隙,则需要找到不同行数的计数:

var rowCount = _dataCol.Select(cell => cell.rowNumber).Distinct().Count();

如果你确定每一行都有完全三列,那么更快的方式当然是var rowCount = _dataCol.Count / 3;

答案 1 :(得分:1)

要获得rowNumber的最大值,您可以使用LinQ:

var rowCount = _dataCol.Max(x => x.rowNumber);