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

时间:2012-04-03 16:32:34

标签: c# linq

嗨我有这样的结构

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

作为输入,我采用像这样的字符串列表List<string>

"firstname-lastname"

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

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

希望我很清楚。

非常感谢

2 个答案:

答案 0 :(得分:4)

我假设您来自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表达式使字符串拆分一次,然后重用拆分的结果。

答案 1 :(得分:2)

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