代码之家  ›  专栏  ›  技术社区  ›  Geoff Appleford

将对象列表转换为字符串列表

  •  90
  • Geoff Appleford  · 技术社区  · 17 年前

    有没有办法转换a List(of Object) a List(of String) 在c或vb.net中,不迭代所有项目?(幕后迭代很好,我只想要简洁的代码)

    更新: 最好的办法可能就是重新选择

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

    myList.Select(i => i.ToString()).ToList();
    
    7 回复  |  直到 7 年前
        1
  •  88
  •   Mehrdad Afshari    17 年前

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

    您可以使用LINQ获取延迟求值版本的 IEnumerable<string> 从这样的对象列表中:

    var stringList = myList.OfType<string>();
    
        2
  •  57
  •   Christer Eriksson    13 年前

    这适用于所有类型。

    List<object> objects = new List<object>();
    List<string> strings = objects.Select(s => (string)s).ToList();
    
        3
  •  26
  •   Daniel Schaffer    17 年前

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

    var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
    
        4
  •  12
  •   ctacke    17 年前

    你是说这样的事情吗?

    List<object> objects = new List<object>();
    var strings = (from o in objects
                  select o.ToString()).ToList();
    
        5
  •  3
  •   marc_s MisterSmith    17 年前
    List<string> myList Str = myList.Select(x=>x.Value).OfType<string>().ToList();
    

    使用“选择”选择特定列

        6
  •  2
  •   gaurav    5 年前

    否-如果你想转换 所有 列表中的元素,你必须触摸 所有 该列表中的元素以某种方式。

    你可以用不同的方式指定/编写迭代(foreach())。……或者。ConvertAll()或其他方法),但最终,无论如何,一些代码都会迭代每个元素并对其进行转换。

    残渣

        7
  •  1
  •   Ben Robbins    17 年前

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