c# - 拆分字符串并转换为自定义类型

标签 c# linq lambda

我有一个字符串,我想按字符 x 拆分,然后想将结果字符串数组转换为用户定义的类型。例如,我有字符串 1800x1200 并想转换成我的名为 Layout 的类型,如下所示:

public class Layout
{
    public Double LongSide { get; set; }
    public Double ShortSide { get; set; }
}

最佳答案

对于类似的东西,您不需要 lambda 表达式或 LINQ 查询,您可以这样做:

string str = "1800x1200";
string[] array = str.Split('x');
Layout layout = new Layout()
{
    LongSide = double.Parse(array[0]),
    ShortSide = double.Parse(array[1])
};

请确保检查从 Split 返回的数组的大小,如果您的字符串可以包含非数值,也请考虑使用 double.TryParse

如果您正在处理字符串值的集合,而不是像这样的单个字符串,LINQ 会很有用:

List<string> list = new List<string>
{
   "1800x1200",
   "1600x1000",
   "1400x800",
   "1200x600",
};

List<Layout> layoutList 
    = list.Select(r => r.Split('x'))
           .Select(r => new Layout
                    {
                        LongSide = double.Parse(r[0]),
                        ShortSide = double.Parse(r[1])
                    })
            .ToList();

有了字符串集合,您可以使用 LINQ 获取自定义对象的集合。

关于c# - 拆分字符串并转换为自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700624/

相关文章:

c# - 为什么 n.GetHashCode() 有效但 n.GetType() 抛出异常?

c# - AppDelegate 已经定义了 FinishedLaunching

c# - 使用 Contains 搜索部分 linq 文本

c# - 何时首选 lambda 表达式中的参数?

c# - 为什么某些 C# lambda 表达式会编译为静态方法?

c# - 无法在 Image 类中找到 FromStream

c# - 如何使用 c#asp.net 为 ffmpeg 制作加载屏幕

c# - OrderBy 和 List 与 IOrderedEnumerable

c# - 为什么 Linq Cast<> 助手不能与隐式转换运算符一起使用?

c++ - 在通用 lambda 捕获中使用 this 指针