跳过foreach循环中特定类型的项目

本文关键字:类型 项目 foreach 循环 跳过 | 更新日期: 2023-09-27 18:21:24

我有以下代码用于从excel文件中填充数据表:

for (int rowIndex = cells.FirstRowIndex; rowIndex <= cells.LastRowIndex; rowIndex++)
{
    var values = new List<string>();
    foreach (var cell in cells.GetRow(rowIndex))
    {
        values.Add(cell.Value.StringValue);
    }
    dataTable.LoadDataRow(values.ToArray(), true);
}

当单元格的数据类型和我在表中设置的数据类型不同时,我会遇到问题。

如何跳过数据类型错误的单元格?

我也知道这一点,但我无法让它在我的情况下发挥作用:

foreach //...
{
    if //if datatype is not right
    {
        continue;
    }
}

跳过foreach循环中特定类型的项目

您可以使用LINQ OfType<IMyType>()方法过滤掉错误的项目:

// do not forget adding using System.Linq;
var filteredItems = items.OfType<IMyType>();
var values = new List<IMyType>(filteredItems); 

MSDN:

根据指定的类型筛选IEnumerable的元素。OfType(IEnumerable)方法只返回中的那些元素可以转换为TResult 类型的源

C#有一个is运算符。

例如:

foreach(var item in collection)
{
 if(item is string)
 {
   //Do something with the string.
 }
}

使用is运算符:

if(cell is MyType)
{
  // can work
}

is:

检查对象是否与给定类型兼容。