概要
オブジェクトを表すコンマで区切られた文字列と、それらのオブジェクトのプロパティを表すスペースがあります。
string sOrderBy = "Column1 ASC, Column2 DESC";
List<OrderByColumn>
それを次の場所に変換する必要がOrderByColumn
あります。
public class OrderByColumn
{
public string ColumnName { get; set; }
public bool IsAscending { get; set; }
}
問題
sOrderBy.Split(',').Select(x => new OrderByColumn()
{
ColumnName = x.Trim().Split(' ')[0].Trim(),
IsAscending = x.Trim().Split(' ')[1].Trim() == "ASC" ? true : false
}).ToList<OrderByColumn>();
上記のコードは機能しますが、x.Trim().Split(' ')
複数回呼び出すには冗長性があります。(また、コードは現在、0 と 1 の配列値があると想定していることを認識しています)。
この冗長性を取り除く方法はありますか? どういうわけかx.Trim().Split(' ')
無名関数に結果を渡し、OrderByColumn
そこからオブジェクトを返しますか?
2 つの for/foreach ループを使用してこの問題を解決できることはわかっていますが、linq とラムダはとてもクールです! :-)