从字符串数组列表转换为对象列表

6
如果我有一个看起来像这样的简单类:
public string Param1 { get; set; }
public string Param2 { get; set; }
public SimpleClass (string a, string b) { Param1 = a; Param2 = b; }

从另一个类返回的字符串数组列表:

var list = new List<string[]> {new[] {"first", "second"}, new[] {"third", "fourth"}};

有没有更有效的方法使用C#来得到List<SimpleClass>,而不需要像这样做一样:
var list1 = new List<SimpleClass>();
foreach (var i in list)
{          
    var data = new SimpleClass(i[0], i[1]);
    list1.Add(data);         
}

可能意味着,在foreach内部不创建冗余变量,或者是使用一个可以做这种事情的标准库。 - hello
2个回答

9
您可以使用Linq:
(您可以利用Linq)
var simpleClassList = originalList.Select(x => new SimpleClass(x[0], x[1])).ToList()

1
是的,或者使用非常老式的ConvertAll实例方法var simpleClassList = originalList.ConvertAll(x => new SimpleClass(x[0], x[1]));,其中直接返回了一个List<>(因此没有惰性枚举器)。 - Jeppe Stig Nielsen

3

正如 @rualmar 所说,您可以使用 linq。但是您也可以重载隐式运算符。 例如

public static implicit operator SimpleClass(string[] arr)
{
    return new SimpleClass(arr[0], arr[1]);
}

在那之后,你可以写下这段文字。

var list = new List<SimpleClass> { new[] { "first", "second" }, new[] { "third", "fourth" } };

感谢您的回答。 - hello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接