のソートの冗長性を削減する私のようなだけで何かだっソートする入力されたDataTableのを持っていた:(私の)LINQの一覧は
DataTable.DefaultView.Sort("sortexpression");
並べ替え式が文字列だったので、私はちょうどソートフィールドと方向の両方を追加することができ私が持っていたソートオプションの数にかかわらず、いくつかの行がありました。今LINQのイムは明らかに似た何かをするために非常に間違って何かをやって、私はこれをやっている:
this.GetSortExpressions();
if ((ViewState["SortDirection"] as string) == "ASC")
{
switch (ViewState["SortField"] as string)
{
case "LKey":
this.SortedDetails = this.Details.OrderBy(d => d.LKey);
break;
case "MName":
this.SortedDetails = this.Details.OrderBy(d => d.MaterialName);
break;
case "FMSQOH":
this.SortedDetails = this.Details.OrderBy(d => d.FMSQOH);
break;
case "CCQOH":
this.SortedDetails = this.Details.OrderBy(d => d.CCQOH);
break;
case "FMSQOHVary":
this.SortedDetails = this.Details.OrderBy(d => d.FMSQOHVary);
break;
default:
this.SortedDetails = this.Details.OrderBy(d => d.LKey);
break;
}
}
else
{
switch (ViewState["SortField"] as string)
{
case "LKey":
this.SortedDetails = this.Details.OrderByDescending(d => d.LKey);
break;
case "MName":
this.SortedDetails = this.Details.OrderByDescending(d => d.MaterialName);
break;
case "FMSQOH":
this.SortedDetails = this.Details.OrderByDescending(d => d.FMSQOH);
break;
case "CCQOH":
this.SortedDetails = this.Details.OrderByDescending(d => d.CCQOH);
break;
case "FMSQOHVary":
this.SortedDetails = this.Details.OrderByDescending(d => d.FMSQOHVary);
break;
default:
this.SortedDetails = this.Details.OrderByDescending(d => d.LKey);
break;
}
}
それはひどい神。私は事実について心配しています私は2 * nのケースステートメントを追加するたびに新しい並べ替えフィールド。どうしたらいいですか?
なぜ 'OrderByDescending'の結果を' IOrderedEnumerable'にキャストしていますか?それはすでにそれを返します。 –
こんにちは、私はそれをきれいにしました。前の混乱から二日酔いだった。 – rism
'' ViewState ["SortField"] ''を制御できますか?それは型ですか?もしそうなら、あなたはそれ以外に '' string''を作ることができますか? LINQの全体のポイントは、タイプセーフティを持つことです - 文字列はそれをあなたから遠ざけます。 –