-1

ユーザーがテキストファイルをアップロードして解析するMVCWebアプリがあります。

要件が変更されたばかりで、同じ種類の複数のファイルがアップロードされるようになります。以下のメソッドReadPartsにファイルパスを送信して単一のファイルを解析します。ReadPartsはストリームを開き、メソッドparseReplicateBlockを呼び出して目的のフィールドを取得します。複数のファイルの場合、すべてのファイルを1つの大きなストリームに読み込むことができますが、バッファ制限などを超える可能性があります。

そのため、ファイルごとに解析し、結果をオブジェクトに入力することを考えています。私の要件は、日付フィールドに基づいてレコードを並べ替えることです。

このメソッドReadLogFileをより良い方法で、特にinitialtionDateとinitiationTimeに基づいてソートする方法について、いくつかの助けが必要です。initialDateとTimeに基づいて最小レコードを見つけてから、他のロジックを実行したいと思います。

問題は、オブジェクト内のリストメンバーを並べ替えると、他のレコードの位置が失われることです。

4

1 に答える 1

1

内の個別のコレクションにレコードの各フィールドを保存しているようですLogFile。これは、データを保存する非常に奇妙な方法のようです。

これらのコレクションの 1 つを並べ替えると、もちろん、他のフィールドとは関係がないため、それらとの関係はなくなります。すべてのコレクションの集計に依存している場合 (たとえば、解析されたレコードの 1 つからフィールドが欠落している場合) には、バグが発生する巨大な領域もあります。

代わりに、SINGLE レコードを表し、Logfileこれらのレコードの SINGLE コレクションを持つクラスが必要です。例えば:

public class ReplicateBlock
{
    public string   ReplicateId    { get; set; }
    public string   AssayNumber    { get; set; }
    public DateTime InitiationDate { get; set; }
    //etc
}

public class LogFile
{
    public List<ReplicateBlock> ReplicateBlocks = new List<ReplicateBlock>();
}

あなたのコードに従うのは非常に難しいと言わざるを得ません。あなたのすべての関数が静的であるという事実は、あなたがオブジェクト指向プログラミングに特に精通していないと私に思わせます。このテーマに関する良い本を入手することをお勧めします。

于 2012-12-05T22:02:47.593 に答える