私は以下の問題を抱えています: DBからデータを選択し、テーブルの各項目に対してモデルを作成します。 そのモデルには3つの言語で名前が含まれるリストが含まれています。 何らかの理由で、LINQはリストの初期化順序を保持しません。LINQリスト初期化からの初期化を維持しない初期化子
コード:
db.SA_BamaType
.Select(b => new BamaTypeModel()
{
id = b.p_bamatype,
bamatypeNames = new List<string>()
{b.bamatypeafdrukNL, b.bamatypeafdrukFR, b.bamatypeafdrukEN}
}).ToList();
しかし、私はこのリストをデバッグするとき、私はアイテムが位置からランダムに切り替えていることがわかります。 ENはインデックス0になりますが、NLはインデックス0になります。
辞書がこれに最適ですが、LINQは辞書を翻訳できないようですので、リストを使用しました。
辞書に変換することができます。 [ToDictionary()メソッド](http://msdn.microsoft.com/en-us/library/system.linq.enumerable.todictionary.aspx)を参照してください。また、データベースから行を取得する場合、順序は次のようになります。特定のキー(またはキーのグループ)にクラスタード・インデックスを持たないか、結果セットを処理する前にソートしない限り、保証されることはありません。 –
データベースからの注文は保証されない場合があります。しかし、List()は、渡された順序でアイテムを格納することを保証する必要があります!奇妙な。 –
それは確かにかなり変です。それは重要な行の順序ではなく、リストの初期化子で割り当てるアイテムの順序です。リストの順序が失われているようです。私は辞書を使っていましたが、実際にはこの状況でもっとも良い方法ですが、まだリストが私が初期化した項目の順序を保持したくない理由は分かりません。 – Mortana