gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:15 25 4
gpt4 key购买 nike

概览

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

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对象从那里?

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

最佳答案

如何在 Select 中引入一个临时变量:

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

关于c# - 使用 linq 和 lambdas 的多分隔字符串到对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com