字符串列表的值列表

时间:2017-04-14 12:44:34

标签: c#

如何转换它:

var values = new List<object> { 1, 5, "eeE", MyEnum.Value };

var stringValues = new List<object> { "1", "5", "eeE", MyEnum.Value.ToString() };

但要快速做到吗?

2 个答案:

答案 0 :(得分:2)

这是一种方法

//original list
var values = new List<object> { 1, 5, "eeE", Colors.Red };
//List<string>
var stringValues = values.Select(x => x.ToString()).ToList();
//List<object>
var stringValuesAsObjectList = values.Select(x => x.ToString()).ToList<object>();

答案 1 :(得分:1)

首先,不清楚您的问题是否与Convert List(of object) to List(of string)有任何不同;如果是的话,你应该澄清你的具体情况。

直接的解决方案是使用LINQ:var stringValues = values.Select(v => (object) v.ToString()).ToList();注意投射到object以匹配上面的代码。

不清楚为什么您希望结果为List<object>而不是List<string>。此外,您更愿意使用IEnumerable<>而不是转换为List<>。因此首选代码为

var stringValues = values.Select(v => v.ToString());

如果你经常做这类事情,你可能会发现一个有用的扩展方法

static class ListExtensions
{
   public static IEnumerable<string> AsStrings(this List<object> values)
   {
      return values.Select(v => v.ToString());
   }
}

您可以使用它:

var stringValues = values.AsStrings();

根据您的需要,您可能需要比Object.ToString()更复杂的字符串转换。 Convert.ToString()尝试在调用ToString()之前先找到IConvertableIFormattable接口。

    var stringValues = values.Select(v => Convert.ToString(v));