IDataReader.AsSeq
Exposes a reader's current result set as seq<IDataRecord>. Reader is closed when sequence is fully enumerated. Bonus method: turns an IDataReader with multiple result sets into a seq<seq<IDataRecord>>.
Source
namespace Foo
[<AutoOpen>]
module FsDataEx =
    type System.Data.IDataReader with
        /// Exposes a reader's current result set as seq<IDataRecord>.
        /// Reader is closed when sequence is fully enumerated.
        member this.AsSeq =
seq { use reader = this
      while reader.Read() do 
          yield reader :> IDataRecord }
        /// Exposes all result sets in a reader as seq<seq<IDataRecord>>.
        /// Reader is closed when sequence is fully enumerated.
        member this.AsMultiSeq =
let rowSeq (reader:IDataReader)  =
    seq { while reader.Read() do yield reader :> IDataRecord }
seq {
    use reader = this
    yield rowSeq reader
    while reader.NextResult() do
        yield rowSeq reader
}Example
for row in reader.AsSeq do
// stuff with rowAuthor: Joel Mueller
Submitted on: 29 okt. 2010
Language: F#
Type: System.Data.IDataReader
Views: 5408