Reputation: 1228
If I have a simple class that looks like this:
public string Param1 { get; set; }
public string Param2 { get; set; }
public SimpleClass (string a, string b) { Param1 = a; Param2 = b; }
List of string array returned from another class:
var list = new List<string[]> {new[] {"first", "second"}, new[] {"third", "fourth"}};
Is there a more efficient way using C# to end up with List<SimpleClass>
without doing something like:
var list1 = new List<SimpleClass>();
foreach (var i in list)
{
var data = new SimpleClass(i[0], i[1]);
list1.Add(data);
}
Upvotes: 6
Views: 2597
Reputation: 155
As was said by @rualmar you can use linq. But you also can overload implicit operator. For example
public static implicit operator SimpleClass(string[] arr)
{
return new SimpleClass(arr[0], arr[1]);
}
and after that you can write this
var list = new List<SimpleClass> { new[] { "first", "second" }, new[] { "third", "fourth" } };
Upvotes: 3
Reputation: 239
You can use Linq:
var simpleClassList = originalList.Select(x => new SimpleClass(x[0], x[1])).ToList()
Upvotes: 10