使用linq和lambdas的多分隔字符串到对象列表

Bra*_*one 1 c# linq arrays lambda

概观

我有一个用逗号分隔的字符串,表示对象和空格,表示这些对象的属性:

string sOrderBy = "Column1 ASC, Column2 DESC";
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为以下List<OrderByColumn>位置OrderByColumn:

public class OrderByColumn
{
    public string ColumnName { get; set; }
    public bool IsAscending { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题

sOrderBy.Split(',').Select(x => new OrderByColumn()
{
    ColumnName = x.Trim().Split(' ')[0].Trim(),
    IsAscending = x.Trim().Split(' ')[1].Trim() == "ASC" ? true : false
}).ToList<OrderByColumn>();
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但是在x.Trim().Split(' ')多次调用时存在一些冗余.(另外,我知道代码目前假设有0和1数组值).

有没有办法删除这种冗余?以某种方式将结果传递x.Trim().Split(' ')给匿名函数,然后OrderByColumn从那里返回一个对象?

我知道我可以使用两个for/foreach循环来解决这个问题,但是linq和lambdas非常酷!:-)

nem*_*esv 11

如何在以下内容中引入临时变量Select:

sOrderBy.Split(',').Select(x => 
    {
        var trimmedSplitted = x.Trim().Split(' ');
        return new OrderByColumn()
        {
            ColumnName = trimmedSplitted[0].Trim(),
            IsAscending = (trimmedSplitted[1].Trim() == "ASC")
        };
    }
).ToList<OrderByColumn>()
Run Code Online (Sandbox Code Playgroud)