おはようございます。Linqリストの並べ替えに問題があります
私は異なる理由でインデックスを作成したいクラスのリストを持っています。一つは異なる時間に異なる順序でデータを読みたいということです。私が抱えている問題は、私がLINQで並べ替えることができないということです。
私は私のリストを持っているクラスが(これは小さいバージョンです)
List<SalesRecord> Records = new List<SalesRecord>();
class SalesRecord
{
public Int16 SalesID { get; set; }
public Int32 Invoice { get; set; }
public DateTime BookoutDate { get; set; }
}
レコードのカウントサイズはおよそ50万
私の考えは、リストのカップルを作成していたこれに似ていますそれは特定の順序でレコードの各項目を参照することになる
例:
List<int> BookoutDateIndex;
List<int> InvoiceIndex;
Records[BookoutDateIndex[0]].BookoutDate // Oldest date
Records[BookoutDateIndex[1]].BookoutDate // Second oldest date
// etc
私が見てきた情報、私はほとんど私が欲しいものないことを発見した最も近いがこれですに基づいて3210
...
// Copy dates to new list
List<DateTime> BookoutDates = new List<DateTime>();
for (int salesRecordIndex = 0; salesRecordIndex < records.Count; salesRecordIndex++)
BookoutDates.Add(Records[salesRecordIndex].BookoutDate);
// Sort list
var sorted = Indexes.BookoutDates
.Select((x, i) => new KeyValuePair<DateTime, int>(x, i))
.OrderBy(x => x.Key)
.ToList();
これは動作しますが、私は指数の実際の日付をしたいと私はありませんあらかじめ新しいリストに日付をコピーする必要はありません。
私はこれがAccessデータベースのようなものにデータをロードすることで簡単になると思っていますが、私はデータベースオプションなしでそれを行うことをお勧めします。
ご協力いただければ幸いです。
''インデックスに実際の日付が欲しいのではないですか? 'そして、結果のリストで何をしたいですか?私はあなたが達成しようとしていることを理解していません。単に 'BookoutDate'で' records'を注文したいのであれば、 'records.OrderBy(r => r.BookoutDate)'とするだけです。あなたはそれとは違うものを明確にすることができますか? – David
は実際にこれを過度に複雑にしているようです。ちょうど 'Records.OrderBy'あなたが必要なもの – reckface
最後のデータを保持したいもの、または〜500kレコードの2つのリストが必要な理由がわからない場合は、元のリストをオーダーに並べ替えるのが一番良いと思いますあなたがその順序でそれを必要とするとき。 – d219