跳过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;
}
}
您可以使用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
:
检查对象是否与给定类型兼容。