跳过列范围的第一个值并添加到列表中

所以我有一个范围,我循环,然后将值添加到列表。 我想跳过第一个值,因为它是一个头。 我怎么能这样做呢? 就我看来,我正在增加所有的价值

{ var cellValues = new List<string>(); //var rowsCount = worksheet.UsedRange.Rows.Count; var columnRange = worksheet.UsedRange.Columns[1]; foreach (var item in columnRange) { foreach (var cellValue in item.Value) { cellValues.Add(cellValue.ToString()); } } return cellValues; } 

你可以使用循环而不是foreach

  for (int a = 1; a < columnRange.Count; a++) { for (int b = 0; b < columnRange[a].Value.Count; b++) { cellValues.Add(columnRange[a].Value[b].ToString()); } } 

要么

  var cellValues = new List<string>(); //var rowsCount = worksheet.UsedRange.Rows.Count; var columnRange = worksheet.UsedRange.Columns[1]; bool first = true; foreach (var item in columnRange) { if (first) { first = false; } else { foreach (var cellValue in item.Value) { cellValues.Add(cellValue.ToString()); } } } return cellValues; 

或者如ramin所述的Skip()

您可以使用LINQ的Skipfunction。

  var cellValues = new List<string>(); //var rowsCount = worksheet.UsedRange.Rows.Count; var columnRange = worksheet.UsedRange.Columns[1]; foreach (var item in columnRange) { foreach (var cellValue in ((object[,])item.Value).Cast<object>().Skip(1)) { cellValues.Add(cellValue.ToString()); } } return cellValues; 

但是因为item.Value是一个dynamictypes,所以我们需要将其转换为使用扩展方法,因为它是一个锯齿状的数组,我们需要使用Cast<object>()