嗨我有这样的结构
typedef struct
{
string firstname;
string lastname;
} person;
作为输入,我采用像这样的字符串列表List<string>
"firstname-lastname"
从输入字符串转换为struct person的最快方法是什么?可以通过使用LINQ来完成吗?
字符串可能不包含' - ',在这种情况下,sting将保存在person.firstname中,而person.lastname为空。
希望我很清楚。
非常感谢
答案 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();