別のリストの ID に基づいてオブジェクトのリストを並べ替えます
場合によっては、別のリストに保存されている ID に基づいてオブジェクトのリストを並べ替える必要がある場合があります。次の点を考慮してください:
次の値を持つ docIds
という名前の List<long>
があります: { 6, 1, 4, 7, 2 }。さらに、docs
内の ID で表されるオブジェクトを格納する List<T>
という名前の docIds
があります。
あなたの目標は、両方のリスト内の項目の順序の一貫性を維持することです。これは、List<T>
内のオブジェクトが List<long>
内の対応する ID と同じ位置を占める必要があることを意味します。たとえば、docs
内の ID 1 のオブジェクトはインデックス 1 になければなりません。
List<T>
を変更せずにこの並べ替えを実現するには、次のように LINQ を使用します。
<code class="language-csharp">docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();</code>
この LINQ 式は、最初に IndexOf
を使用して、docIds
内の各オブジェクト ID のインデックスを決定します。次に、このインデックスをソートキーとして使用し、List<T>
内のオブジェクトを List<long>
内の ID と効果的に位置合わせします。
以上が別のリストの ID に基づいてオブジェクトのリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。