【问题标题】:Convert from List of string array to List of objects从字符串数组列表转换为对象列表
【发布时间】:2016-10-18 22:13:48
【问题描述】:

如果我有一个如下所示的简单类:

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&lt;SimpleClass&gt; 而无需执行以下操作:

var list1 = new List<SimpleClass>();
foreach (var i in list)
{          
    var data = new SimpleClass(i[0], i[1]);
    list1.Add(data);         
}

【问题讨论】:

  • 可能的意思是,不在foreach 中创建冗余变量,或者可能是执行此类操作的标准库。

标签: c# arrays list


【解决方案1】:

你可以使用 Linq:

var simpleClassList = originalList.Select(x => new SimpleClass(x[0], x[1])).ToList()

【讨论】:

  • 是的,或者使用非常老式的ConvertAll 实例方法var simpleClassList = originalList.ConvertAll(x =&gt; new SimpleClass(x[0], x[1])); 直接返回List&lt;&gt;(所以没有惰性枚举器)。
【解决方案2】:

正如@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" } };

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2013-06-25
相关资源
最近更新 更多