以前に並べ替えられた列に応じて、テーブルのいくつかの列を並べ替えようとしています。最初の 2 つの列では正常に機能します。しかし、3 番目の列を並べ替えるとすぐに、2 番目の列の並べ替えが失われます。今のところ私の知る限り、foreach ループに問題があるはずです。ソート用のコードは次のとおりです。
public List<object> inhaltSortieren(List<object> zuSortierendeListe, Dictionary<string, SortierRichtung> sortierung)
{
IOrderedEnumerable<object> sortierteListe = null;
if (sortierung.First().Value == SortierRichtung.asc)
sortierteListe = zuSortierendeListe.OrderBy(x => x.GetType().GetProperty(sortierung.First().Key).GetValue(x, null));
else if (sortierung.First().Value == SortierRichtung.desc)
sortierteListe = zuSortierendeListe.OrderByDescending(x => x.GetType().GetProperty(sortierung.First().Key).GetValue(x, null));
bool first = true;
foreach (KeyValuePair<string, SortierRichtung> spalte in sortierung)
{
if (first)
{
first = false;
continue;
}
if (spalte.Value == SortierRichtung.asc)
sortierteListe = sortierteListe.ThenBy(x => x.GetType().GetProperty(spalte.Key).GetValue(x, null));
else if (spalte.Value == SortierRichtung.desc)
sortierteListe = sortierteListe.ThenByDescending(x => x.GetType().GetProperty(spalte.Key).GetValue(x, null));
}
return sortierteListe.ToList();
}
何か案は?
更新:さらに情報を追加するかもしれません:
- @param zusortierendeListe: これは並べ替えたいリストです。オブジェクトのリストです
- @param sortierung: これは、昇順または降順で並べ替えたい方向です
オブジェクト自体は Tabledata のリストです