转换List(of object)到List(of string)

有没有办法转换List(of Object)List(of String)在c#或vb.net没有迭代所有的项目? (幕后的迭代很好 – 我只是想简洁的代码)

更新:最好的方法可能只是做一个新的select

 myList.Select(function(i) i.ToString()) 

要么

 myList.Select(i => i.ToString()); 

没有迭代来build立一个新的列表是不可能的。 您可以将该列表包装在实现IList的容器中。

你可以使用LINQ从一个对象列表中得到一个懒惰的IEnumerable<string>版本,如下所示:

 var stringList = myList.OfType<string>(); 

这适用于所有types。

 List<object> objects = new List<object>(); List<string> strings = objects.Select(s => (string)s).ToList(); 

如果您想更好地控制转换的发生方式,可以使用ConvertAll:

 var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod()); 

你的意思是这样吗?

 List<object> objects = new List<object>(); var strings = (from o in objects select o.ToString()).ToList(); 

否 – 如果要转换列表中的所有元素,则必须以某种方式触摸该列表中的所有元素。

你可以用不同的方式(foreach()……或者.ConvertAll()或者其他)来指定/写入迭代,但是到最后,这种或者那种方式,一些代码会遍历每一个元素并将其转换。

渣子

你可以在List(of object)构build的时候进行string转换吗? 这将是避免List(of object)创build后枚举整个列表的唯一方法。