【发布时间】:2017-04-14 12:44:33
【问题描述】:
如何转换:
var values = new List<object> { 1, 5, "eeE", MyEnum.Value };
到
var stringValues = new List<object> { "1", "5", "eeE", MyEnum.Value.ToString() };
但是要快速完成吗?
【问题讨论】:
标签: c#
如何转换:
var values = new List<object> { 1, 5, "eeE", MyEnum.Value };
到
var stringValues = new List<object> { "1", "5", "eeE", MyEnum.Value.ToString() };
但是要快速完成吗?
【问题讨论】:
标签: c#
这是一种方法
//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>();
【讨论】:
首先,不清楚您的问题与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() 尝试先找到IConvertable 和IFormattable 接口,然后再调用ToString()。
var stringValues = values.Select(v => Convert.ToString(v));
【讨论】: