跳过列范围的第一个值并添加到列表中
所以我有一个范围,我循环,然后将值添加到列表。 我想跳过第一个值,因为它是一个头。 我怎么能这样做呢? 就我看来,我正在增加所有的价值
{ 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的Skip
function。
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>()
。