gpt4 book ai didi

c# - 从顺序数据填充属性时创建类实例的最短方法

转载 作者:行者123 更新时间:2023-11-30 19:49:16 25 4
gpt4 key购买 nike

我有字符串列表

var data = new List<string> {"Name1", "Surname1", "Name2", "Surname2" };

和描述Person的类

class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}

创建List<Person>的最短路径是什么?从 data 填充列表结果应该等于

var persons = new List<Person>
{
new Person { Name = "Name1", Surname = "Surname1" },
new Person { Name = "Name2", Surname = "Surname2" }
};

提前致谢!

最佳答案

如果您可以使用 LINQ,这里有一种方法:

 var persons = Enumerable.Range(0, data.Count / 2)
.Select(i => new Person
{
Name = data[2 * i],
Surname = data[2 * i + 1]
})
.ToList();

您可以将其大致等同于:

var persons = new List<Person>();

for(int i = 0; i < data.Count / 2 ; i++)
{
var person = new Person
{
Name = data[2 * i],
Surname = data[2 * i + 1]
};

persons.Add(person);
}

这是另一个效率较低的版本(仅适用于 .NET 4.0),它使用 Zipoperator :

var names = data.Where((s, i) => i % 2 == 0);
var surnames = data.Where((s, i) => i % 2 == 1);

var persons = names.Zip(surnames,
(name, surname) => new Person
{
Name = name,
Surname = surname
})
.ToList();

您还可以使用 Batchoperator来自 MoreLinq这里:

var persons = data.Batch(2)
.Select(pair => new Person
{
Name = pair.ElementAt(0),
Surname = pair.ElementAt(1)
})
.ToList();

关于c# - 从顺序数据填充属性时创建类实例的最短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4267321/

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