Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在将数据返回到其他代码之前,对通过IDataReader获取的数据进行预处理_C#_.net - Fatal编程技术网

C# 在将数据返回到其他代码之前,对通过IDataReader获取的数据进行预处理

C# 在将数据返回到其他代码之前,对通过IDataReader获取的数据进行预处理,c#,.net,C#,.net,在让其他代码处理这些数据之前,我需要对通过.NETIDataReader(从数据库返回)获取的数据进行处理。是否有任何推荐的模式/现有代码可用 我在想,我应该实现自己的IDataReader,封装“源IDataReader”,当用户在我的阅读器上调用Read时,在返回数据之前对检索到的数据进行按摩。我可能会这样做。其他代码可以获得强类型对象,而不是泛型读取器。此外,由于datareader是可流化的,您还可以通过重新调整IEnumerable来流化对象。这将允许您在仍在读取数据时处理数据(如果适

在让其他代码处理这些数据之前,我需要对通过.NETIDataReader(从数据库返回)获取的数据进行处理。是否有任何推荐的模式/现有代码可用


我在想,我应该实现自己的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。