相关疑难解决方法(0)

如何轻松将DataReader转换为List <T>?

我有一个数据DataReader,我希望将其转换为List<T>.对此有什么简单的解决方案?

例如,在CustomerEntity类中,我有CustomerId和CustomerName属性.如果我的DataReader将这两列作为数据返回,那么我该如何将其转换为List<CustomerEntity>.

c# datareader generic-list

112
推荐指数
8
解决办法
26万
查看次数

使用IDataReader作为IEnumerable <T>的最佳方法?

我需要在任何像这样的IDataReader实现上使用Linq

var c = sqlDataReader.AsEnumerable().Count();
Run Code Online (Sandbox Code Playgroud)

例:

public abstract class Test
{
    public abstract SqlDataReader GetSqlDataReader();

    public void Foo()
    {
        SqlDataReader sqlDataReader = GetSqlDataReader();
        IEnumerable<SqlDataReader> sqlEnumerable = sqlDataReader.AsEnumerable();
        var c = sqlEnumerable.Count();
        var s = sqlEnumerable.Sum();
        SqlDataReader first = sqlEnumerable.First();
        var t = first.GetSqlXml(10);
    }
}
Run Code Online (Sandbox Code Playgroud)

写这个的最好方法是什么.请写下你的代码片段.

.net c# ienumerable extension-methods

4
推荐指数
5
解决办法
2万
查看次数

如何在Entity Framework Core 2.0中从DbDataReader转换为Task <IEnumerable <TEntity >>?

我通过以下方式在EF Core 2.0中调用存储过程.

private async Task<IEnumerable<TEntity>> InvokeStoredProcedureAsync(string entityName)
{
    var storedProcedureName = string.Format(CultureInfo.InvariantCulture, "sp_{0}BulkSelect", entityName);
    dynamic temp;
    using (MyDbContext MyDbContext = new MyDbContext(_options))
    {
        MyDbContext.Database.OpenConnection();
        DbCommand cmd = MyDbContext.Database.GetDbConnection().CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = storedProcedureName;

        using (var reader = cmd.ExecuteReader())
        {
           temp = reader.Cast<Task<IEnumerable<TEntity>>>();
        }
    }

    return await temp;
}
Run Code Online (Sandbox Code Playgroud)

我需要转换DbDataReaderTask<IEnumerable<TEntity>>.

但是在尝试扩展temp变量以查看其值时,我收到此错误.

读取器关闭时无效尝试调用FieldCount.

请参阅随附的屏幕截图.

在此输入图像描述

c# entity-framework entity-framework-core asp.net-core ef-core-2.0

4
推荐指数
1
解决办法
1020
查看次数