将List(of object)转换为List(of string)

时间:2009-01-26 16:29:19

标签: c# vb.net generics

有没有办法在c#或vb.net中将List(of Object)转换为List(of String)而无需遍历所有项目? (幕后迭代很好 - 我只想要简洁的代码)

更新 最好的方法可能只是做一个新的选择

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

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

7 个答案:

答案 0 :(得分:73)

不迭代构建新列表是不可能的。您可以将列表包装在实现IList的容器中。

您可以使用LINQ从对象列表中获取IEnumerable<string>的惰性评估版本,如下所示:

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

答案 1 :(得分:32)

这适用于所有类型。

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

答案 2 :(得分:22)

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

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

答案 3 :(得分:8)

你的意思是这样的吗?

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

答案 4 :(得分:3)

否 - 如果您要转换列表中的所有元素,则必须以这种或那种方式触摸该列表中的所有元素。

你可以用不同的方式指定/编写迭代(foreach()......,或.ConvertAll()或其他),但最后,不管怎样,一些代码将迭代每个元素并转换它。

马克

答案 5 :(得分:2)

List<string> myList Str = myList.Select(x=>x.Value).OfType<string>().ToList();

使用“选择”选择特定列

答案 6 :(得分:1)

在构建List(对象)时可以进行字符串转换吗?这是在创建List(对象)后避免枚举整个列表的唯一方法。