2017-02-27 1 views
0

저는이 문제를 해결하는 방법에 어려움을 겪고 있습니다.개체 컬렉션의 속성 개수입니다.

스프레드 시트에 각 셀의 셀 정보를 저장하는 클래스가 있습니다.

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

그때 나는 이러한 개체

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

내가 로딩이 3 열 및 3000 개 행이있어 스프레드 시트의 모음으로 엑셀 스프레드 시트를로드, 그래서 내 컬렉션의 크기는 하나 9000입니다 스프레드 시트의 각 셀에 대한 Datacollection 개체입니다.

이 컬렉션에서 행 번호를 어떻게 가져올 수 있습니까? 나는 'rowNumber'의 가장 높은 가치가 필요 하겠지만이 값을 다시 얻는 방법을 모르겠습니다.

많은 감사,

+1

'_dataCol.Count은()'것 것 빠른 방법이 있는지 확인하는 경우 항목 수를 준다. '_dataCol.Max (x => x.rowNumer)'는 최대 행 번호를 부여합니다. –

+2

지금받은 답을 제외하고 이제 .NET 명명 규칙에 대해 배우고 따라하기 시작합니다. (나는 또한 셀 정보를 저장하는 것이'Datacollection' 대신'Cell'이나'CellInformation' 또는 더 비슷한 이름을 붙일 것을 제안하고 싶습니다.) –

답변

2

를 1부터 시작 :

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

그러나 1 대신 임의의 숫자로 시작하거나 행 번호에 간격이있는 경우 개수 o를 찾아야합니다. F 별개의 행 번호 :

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

당신은 모든 행이 정확히 세 개의 열 물론 var rowCount = _dataCol.Count/3;

+0

rowCount가 _dataCol.Count일까요? 3으로 나누어야하는 이유는 무엇입니까? –

+0

@AdityaKorti'_dataCol'은 하나의 요소 _per cell_를 포함하고 있기 때문에. 그래서'_dataCol.Count'는 행의 수뿐만 아니라 행의 수와 열의 수를 곱한 것입니다. –

+0

나는 그것이 줄줄이라고 생각했다. 셀당 하나의 개체가 실제로 의미가 없습니다. –

1

얻으려면 rowNumber의 최대 값은 LINQ를 사용할 수 있습니다 : 당신은 단순히 LINQ의 Max 확장을 사용할 수 있습니다, 행 번호가 연속 인 경우

var rowCount = _dataCol.Max(x => x.rowNumber); 
관련 문제