如何转换它:
var values = new List<object> { 1, 5, "eeE", MyEnum.Value };
要
var stringValues = new List<object> { "1", "5", "eeE", MyEnum.Value.ToString() };
但要快速做到吗?
答案 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()
之前先找到IConvertable
和IFormattable
接口。
var stringValues = values.Select(v => Convert.ToString(v));