我有这段代码用于从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);
}
当cell与我在表中设置的数据类型不同时,我遇到了问题。
如何跳过错误数据类型的单元格?
我也知道这一点,但在我的情况下我无法使其发挥作用:
foreach //...
{
if //if datatype is not right
{
continue;
}
}
答案 0 :(得分:9)
您可以使用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类型的源
答案 1 :(得分:8)
C#有一个is运营商。
例如:
foreach(var item in collection)
{
if(item is string)
{
//Do something with the string.
}
}
答案 2 :(得分:4)