###前提・実現したいこと
ラムダ式を使って複数のソートキーを組み合わせてListを昇順に並び替えたいです。
このとき、ソートキーはユーザーの設定により変動するものとします。
###発生している問題・エラーメッセージ
たとえば、ソートキーを3つ設定(第1ソートキー、第2ソートキー、第3ソートキー)できるとした場合、
3*2 = 6つの並び替えパターンがあると思います。
下記のソースコードのように、
力技で6つのパターンを用意する方法は思いつくのですが、
あまり良いやり方とはおもいません。
(ソートキーの数が増えるとパターンがどんどん増えてしまうので。)
第1ソートキー、第2ソートキー、第3ソートキーを引数として受け取って、
柔軟に並び替えを行うよい方法はないでしょうか?
###該当のソースコード
※orderbycaseにはユーザーが設定したソートキーから取得したケース番号が入ると想定します。
public void orderby(int orderbycase, List<User> beforeList)
{
var afterlist = new List<User>(); switch (orderbycase) { case 1: afterlist = beforeList.OrderBy(a => a.name) .ThenBy(a => a.address) .ThenBy(a => a.birth).ToList(); break; case 2: afterlist = beforeList.OrderBy(a => a.name) .ThenBy(a => a.birth) .ThenBy(a => a.address).ToList(); break; ※case 3 ~ 6についてもOrderBy,ThenByメソッドを作成します。 } } public class User { public string name { get; set; } public string address { get; set; } public string birth { get; set; } }
###補足情報(言語/FW/ツール等のバージョンなど)
.NET Framework4.6.1
C#
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/01 01:54
2016/06/07 04:57