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)