如何验证 IQueryable<T> 集合中项目的错误?
How to validate errors for items in IQueryable<T> collection?
假设我有一个 class TmpClass,我使用此 class 使用 LinqTo[=38= 从 Excel sheet 返回数据] Excel查询工厂。在这个 class 中,我需要实现一些逻辑来检查数据的正确性。当我使用 ExcelQueryFactory 从 Excel sheet 检索数据时,它 returns ExcelQueryable(从 IQueryalbe 派生而来)多个 Tmp[= 可能会出现验证问题37=] 个实例 - 如何以集合方式处理它们?
Class 用于 Excel sheet 数据映射
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 从 Excel sheet 检索数据 ExcelQueryFactory
..initialize ExcelQueryFactory instance, get column names, set column mapping
//retrieve data
var dataFromExcel = excel.Worksheet<TmpClass>(...worksheet name).ToList();
读取 Excel sheet 行时,其中一些 TmpClass.Name setter 函数将抛出 ArgumentException - 我需要一种方法来处理所有 Excel sheet 行:
- 对具有 ArgumentException
的行(日志记录)执行一些操作
- 并对具有有效数据的行执行一些其他操作。
我可以获取无效项目的集合(可能包含异常信息)吗?我可以获得有效物品的集合吗?
即使您手动迭代项目也可能很难做到。
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
时出现异常,所以无法知道一个enumerable中是否还有更多项。并且不能保证 MoveNext
实际上移动了元素上的指针。
因此,显然,最简单的方法是创建另一个 class,就像 TmpClass
,没有任何业务逻辑,只是为了存储值,并使用这个新的 class。
假设我有一个 class TmpClass,我使用此 class 使用 LinqTo[=38= 从 Excel sheet 返回数据] Excel查询工厂。在这个 class 中,我需要实现一些逻辑来检查数据的正确性。当我使用 ExcelQueryFactory 从 Excel sheet 检索数据时,它 returns ExcelQueryable(从 IQueryalbe 派生而来)多个 Tmp[= 可能会出现验证问题37=] 个实例 - 如何以集合方式处理它们?
Class 用于 Excel sheet 数据映射
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 从 Excel sheet 检索数据 ExcelQueryFactory
..initialize ExcelQueryFactory instance, get column names, set column mapping
//retrieve data
var dataFromExcel = excel.Worksheet<TmpClass>(...worksheet name).ToList();
读取 Excel sheet 行时,其中一些 TmpClass.Name setter 函数将抛出 ArgumentException - 我需要一种方法来处理所有 Excel sheet 行:
- 对具有 ArgumentException 的行(日志记录)执行一些操作
- 并对具有有效数据的行执行一些其他操作。
我可以获取无效项目的集合(可能包含异常信息)吗?我可以获得有效物品的集合吗?
即使您手动迭代项目也可能很难做到。
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
时出现异常,所以无法知道一个enumerable中是否还有更多项。并且不能保证 MoveNext
实际上移动了元素上的指针。
因此,显然,最简单的方法是创建另一个 class,就像 TmpClass
,没有任何业务逻辑,只是为了存储值,并使用这个新的 class。