したがって、私はオブジェクトのリストを持っています(20個あるとしましょう)。次に私は別のリスト(正しく注文されている)を持っています。 私はIDリストでオブジェクトのリストをソートするために、このLINQを持っていた:今idsのリストによるオブジェクトのリストの整列
var outcomeIds = outcomeRequestModels
.OrderByDescending(m => m.Score)
.Select(m => m.Id)
.ToList();
groupResponseModel.Outcomes = groupOutcomes
.OrderBy(m => outcomeIds.IndexOf(m.Id))
.ToList();
、これは作品「希望」が、問題がはそれだけではIDの選択をしていoutcomeIdsです。私は、indexOf
が見つかりませんでしたidのために-1
を返すだろうと思っていただろうと、それは一致IDの下に置かれます。代わりに、リストの最初に表示されます。 どのようにコードを修正して、一致するIDを上部と下部の両方に取得することができますか?逆のことはできません。これは、一致するIDの順序が逆になることを意味するためです。
あなたは、例えば入力のリスト、および予想される出力を与えることができますか?あなたのケースをはっきりとIMHOにするでしょう。 – Pac0
[mcve](@ Pac0の提案を含む)はすばらしいでしょう。 – mjwills
m =>(uint)outcomeIds.IndexOf(m.Id)はおそらく問題を解決します。しかし、実際には2回のマテリアライゼーションを使用するLINQは実際には20個のオブジェクトがある場合にのみあまり良くありません – vitalygolub