0

データを CSV ファイルにエクスポートする MVC アプリケーションを作成しています。Linq クエリを介してプルされたデータがあり、クエリはすべての正しいレコードをプルしますが、データがストリームに完全に書き込まれていません。ユーザーに返される前にストリームをチェックすると、データが部分的またはまったく得られません。

FileHelpers クラス

Imports FileHelpers

<DelimitedRecord(",")> _
Public Class AssetSearchFileHelper
    <FieldOrder(1), FieldQuoted()> _
    Public AssetNumber As String

    <FieldOrder(2), FieldQuoted()> _
    Public AssetDescription As String

    <FieldOrder(3), FieldQuoted()> _
    Public SerialNumber As String

    <FieldOrder(4), FieldQuoted()> _
    Public ClassName As String

    <FieldOrder(5), FieldQuoted()> _
    Public ManufacturerName As String

    <FieldOrder(6), FieldQuoted()> _
    Public ModelName As String

    <FieldOrder(7), FieldQuoted()> _
    Public LocationName As String

    <FieldOrder(8), FieldQuoted()> _
    Public AssignedTo As String
End Class

ストリームを作成して書き込むコード。

Dim asfhTemp As List(Of AssetSearchFileHelper) = (From a In lstFilteredAssets
                                                       Select New AssetSearchFileHelper With { _
                                                           .AssetNumber = a.AssetNumber, _
                                                           .AssetDescription = a.AssetDescription, _
                                                           .SerialNumber = a.SerialNumber, _
                                                           .ClassName = a.ClassName, _
                                                           .ManufacturerName = a.ManufacturerName, _
                                                           .ModelName = a.ModelName, _
                                                           .LocationName = a.LocationName, _
                                                           .AssignedTo = a.UserFullName}).ToList()
Dim dle As New DelimitedFileEngine(GetType(AssetSearchFileHelper))
Dim mStream As New MemoryStream

dle.HeaderText = """Asset #"",""Type"",""Serial #"",""Class"",""Make"",""Model"",""Location"",""Assigned To"""

Dim sw As New StreamWriter(mStream)

dle.WriteStream(sw, asfhTemp)
mStream.Position = 0
4

2 に答える 2

2

ストリームを閉じるかフラッシュする必要があります。内部的に.netはすぐにストリームに書き込みません。情報をバッファリングして、バッファがいっぱいになったとき、またはストリームが閉じたときに、この行を追加するだけで書き込みます

mStream.Close()

または

mStream.Flush()

WriteStream の後

于 2013-05-25T03:43:42.287 に答える
0

自分でこの問題を抱えていました。解決策は、StreamWriter オブジェクトの AutoFlush プロパティを true に設定することです。以下が機能するはずです。

Dim sw As New StreamWriter(mStream)
sw.AutoFlush = True
于 2014-03-14T16:52:54.497 に答える