假设我有一个TmpClass类,我使用这个类使用LinqToExcel ExcelQueryFactory从Excel工作表返回数据。在这个类中,我需要实现一些逻辑来检查数据的正确性。当我使用ExcelQueryFactory从Excel工作表中检索数据时,它返回ExcelQueryable(来自IQueryalbe)多个TmpClass实例可能存在验证问题 - 如何以集合样式处理它们?
Excel工作表数据映射的类
public class TmpClass
{
private string _name;
public string Name
{
set {
if (string.IsNullOrWhiteSpace(value))
{
throw new ArgumentException("Value can not be null/whitespace!");
}
_name = value;
}
}
}
使用LinqToExcel ExcelQueryFactory从Excel工作表中检索数据
..initialize ExcelQueryFactory instance, get column names, set column mapping
//retrieve data
var dataFromExcel = excel.Worksheet<TmpClass>(...worksheet name).ToList();
当读取Excel工作表行时,对于其中一些TmpClass.Name setter函数将抛出ArgumentException - 我需要一种方法来处理所有Excel工作表行:
我可以获得无效项目的集合(可能有异常信息)吗?我可以获得有效物品的集合吗?
答案 0 :(得分:1)
即使您手动迭代项目,也可能很难做到。
var enumerator = excel.Worksheet<TmpClass>(...).GetEnumerator();
while (true)
{
try
{
if (!enumerator.MoveNext())
break;
// use enumerator.Current some way
}
catch
{
// you can't use enumerator.Current
}
}
当调用MoveNext
时发生异常时,无法知道可枚举中是否有更多项目。并且不能保证MoveNext
实际上已经在元素上移动了一个指针。
因此,显然,最简单的方法是创建另一个类,如TmpClass
,没有任何业务逻辑,只是为了存储值,并使用这个新类。