将字符串转换为结构的快速方法

本文关键字:方法 结构 字符串 转换 | 更新日期: 2023-09-27 18:29:57

嗨,我有一个类似的结构

typedef struct  
{ 
    string firstname;  
    string lastname;  
} person;

作为输入,我取一个字符串列表List<string>,就像这个

"firstname-lastname"

从输入字符串转换为结构体person的最快方法是什么?可以通过使用LINQ来完成吗?

字符串可能不包含"-"。在这种情况下,字符串将保存在person.firstname中,而person.lastname为空。

希望我是清白的。

非常感谢

将字符串转换为结构的快速方法

我假设您来自C++,因为命名和语法是C++而不是C#。在C#中,使用类是很自然的(您也可以使用C#结构-只需将class关键字更改为struct):

class Person
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
} 

有了这个类,你可以使用linq创建一个列表:

var people = (
from s in myList
let split = s.Split('-')
select new Person
{
  FirstName = split.First(),
  LastName = split.Skip(1).FirstOrDefault() ?? ""
}).ToList();

let表达式对字符串进行一次拆分,然后重用拆分的结果。

var foos = list.Select(x => new PersonStruct() {
    firstname = x.Split("-")[0],
    lastname = x.Split("-")[1],
}).ToList();