【问题标题】:List of values to list of strings [closed]字符串列表的值列表[关闭]
【发布时间】: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#


【解决方案1】:

这是一种方法

//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>();

【讨论】:

  • 你是对的。在那种情况下,我已经编辑了我的答案。
  • @Ðаn - 很可能 OP 不知道他们真正想要/需要什么或没有正确表达他们的实际意图。
  • @Igor 我猜你是对的,但我已经为挑剔者和反对者编辑了我的答案:)
【解决方案2】:

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

直接的解决方案是使用 LINQ:var stringValues = values.Select(v =&gt; (object) v.ToString()).ToList(); 注意转换为 object 以匹配上面的代码。

不清楚为什么您希望结果为List&lt;object&gt; 而不是List&lt;string&gt;。此外,您应该更喜欢使用IEnumerable&lt;&gt;,而不是转换为List&lt;&gt;。所以 首选 代码将是

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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2020-01-09
    • 2019-03-25
    • 2019-08-17
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多