C# 在将数据返回到其他代码之前,对通过IDataReader获取的数据进行预处理
在让其他代码处理这些数据之前,我需要对通过.NETIDataReader(从数据库返回)获取的数据进行处理。是否有任何推荐的模式/现有代码可用C# 在将数据返回到其他代码之前,对通过IDataReader获取的数据进行预处理,c#,.net,C#,.net,在让其他代码处理这些数据之前,我需要对通过.NETIDataReader(从数据库返回)获取的数据进行处理。是否有任何推荐的模式/现有代码可用 我在想,我应该实现自己的IDataReader,封装“源IDataReader”,当用户在我的阅读器上调用Read时,在返回数据之前对检索到的数据进行按摩。我可能会这样做。其他代码可以获得强类型对象,而不是泛型读取器。此外,由于datareader是可流化的,您还可以通过重新调整IEnumerable来流化对象。这将允许您在仍在读取数据时处理数据(如果适
我在想,我应该实现自己的IDataReader,封装“源IDataReader”,当用户在我的阅读器上调用Read时,在返回数据之前对检索到的数据进行按摩。我可能会这样做。其他代码可以获得强类型对象,而不是泛型读取器。此外,由于datareader是可流化的,您还可以通过重新调整IEnumerable来流化对象。这将允许您在仍在读取数据时处理数据(如果适当或必要,甚至可以并行化操作) GetYourObjectFromDrFunction()显然会执行所需的处理,并生成对象的实例
public IEnumerable<YourObject> GetEm()
{
// assume we have your IDataReader named dr
while (dr.Read())
{
yield return GetYourObjectFromDrFunction(dr);
}
}
public IEnumerable GetEm()
{
//假设我们有你的IDataReader叫dr
while(dr.Read())
{
返回GetYourObjectFromDrFunction(dr);
}
}
我以前没有尝试过你的建议。听起来很合理。需要记住的一点是,您可能还希望从DbDataReader继承。它有一些额外的细节,消费代码可能期望IDataReader不会公开这些细节,比如ReadAsync。