Is there a way to convert a List(of Object)
to a List(of String)
in c# or vb.net without iterating through all the items? (Behind the scenes iteration is fine – I just want concise code)
Update: The best way is probably just to do a new select
myList.Select(function(i) i.ToString()).ToList();
or
myList.Select(i => i.ToString()).ToList();
Can you do the string conversion while the List(of object) is being built? This would be the only way to avoid enumerating the whole list after the List(of object) was created.
No - if you want to convert ALL elements of a list, you'll have to touch ALL elements of that list one way or another.
You can specify / write the iteration in different ways (foreach()......, or .ConvertAll() or whatever), but in the end, one way or another, some code is going to iterate over each and every element and convert it.
Marc
Can you do the string conversion while the List(of object) is being built? This would be the only way to avoid enumerating the whole list after the List(of object) was created.
You mean something like this?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
No - if you want to convert ALL elements of a list, you'll have to touch ALL elements of that list one way or another.
You can specify / write the iteration in different ways (foreach()......, or .ConvertAll() or whatever), but in the end, one way or another, some code is going to iterate over each and every element and convert it.
Marc
This works for all types.
List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
No - if you want to convert ALL elements of a list, you'll have to touch ALL elements of that list one way or another.
You can specify / write the iteration in different ways (foreach()......, or .ConvertAll() or whatever), but in the end, one way or another, some code is going to iterate over each and every element and convert it.
Marc
This works for all types.
List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
You mean something like this?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
If you want more control over how the conversion takes place, you can use ConvertAll:
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
Can you do the string conversion while the List(of object) is being built? This would be the only way to avoid enumerating the whole list after the List(of object) was created.
If you want more control over how the conversion takes place, you can use ConvertAll:
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
Can you do the string conversion while the List(of object) is being built? This would be the only way to avoid enumerating the whole list after the List(of object) was created.
If you want more control over how the conversion takes place, you can use ConvertAll:
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
You mean something like this?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
No - if you want to convert ALL elements of a list, you'll have to touch ALL elements of that list one way or another.
You can specify / write the iteration in different ways (foreach()......, or .ConvertAll() or whatever), but in the end, one way or another, some code is going to iterate over each and every element and convert it.
Marc
List<string> myList Str = myList.Select(x=>x.Value).OfType<string>().ToList();
Use "Select" to select a particular column
List<string> myList Str = myList.Select(x=>x.Value).OfType<string>().ToList();
Use "Select" to select a particular column
You mean something like this?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
Source: Stackoverflow.com