如何将List<Class>转换为String?

3

我有一个列表(List),我想将它转换为字符串(string),包括我添加到列表中的所有字符串和数据。

这是我的类(class)

public class MyClass
{
    public Boolean success { get; set; }
    public String msg { get; set; }

}

那么我会这样声明:

List<MyClass> list = addDataToList("Passwd", "UserID");

那么,我该如何将那个列表转换为字符串呢?感谢任何帮助。

5
你期望得到什么结果?可能可以使用 string.JoinEnumerable.Select 来解决,但如果你不告诉我们转换为字符串应该返回什么,很难给出一个好的答案。 - CodesInChaos
5个回答

9
如果您想将列表中的所有msg连接起来,可以使用string.Join,如下所示:
string str = string.Join(",", list.Select(r=> r.msg));

3
这里有一种方法可以将 List<Class> 转换为 String,同时我也附上了将转换后的 String 再次转换为 List 的方法。
MyClass 类:
public class MyClass
{
    public Boolean success { get; set; }
    public String msg { get; set; }

    // class to string
    public override string ToString()
    {
        return success.ToString() + "," + msg;
    }

    public MyClass(){}

    // string to class
    public MyClass(string myclassTostring)
    {
        string[] props = myclassTostring.Split(',');
        success = Convert.ToBoolean(props[0]);
        msg = props[1];
    }

}

转换的方法:

///  Produce a List ///
List<MyClass> myclassList = 
    new List<MyClass>()
    {
        new MyClass(){success = true, msg = "1suc"},
        new MyClass(){success = false, msg = "2fail"},
        new MyClass(){success = true, msg = "3suc"},
        new MyClass(){success = true, msg = "4suc"},
        new MyClass(){success = false, msg = "5fail"},
    };

///  List Convert To String ///
string myclassListToString =
    String.Join(";", myclassList.Select(o => o.ToString()));

Console.WriteLine(myclassListToString);


///  String Convert Back To List ///
string[] myclassToStrings = myclassListToString.Split(';');
List<MyClass> convertBackList =
    myclassToStrings.
        Select(myclassTostring => new MyClass(myclassTostring)).ToList();

编辑:

几个月后,我开始接触 C# ASP.NET WebAPI ,发现在各种api中经常使用JSON格式。

JSON是一种强大而方便的将数据转换为字符串并将其转换回数据的方式。它可以自动将任何类型的对象、数组、类转换为字符串,并自动转换回来。

关键词是JSON序列化和反序列化,在谷歌上搜索,你可以找到许多现成的包。

我知道其中一个著名的包是NewtonSoft JSON,Microsoft也可能有自己的用于JSON处理的库。

例如:

    public static string ToJSON(this object obj)
    {
        var serializer = new JavaScriptSerializer();
        try
        {
            return serializer.Serialize(obj);
        }
        catch (Exception ex)
        {
            return "";
        }
    }

如果您安装了Nuget包NewtonSoftJson,则可以使用以下功能:

public static string ToJSON(object obj)
{
    return JsonConvert.SerializeObject(obj);    
}

3
public class MyClass
{
   public Boolean success { get; set; }
   public String msg { get; set; }

   public override string ToString()
   {
     // return Whatever formalism of strings, e.g.
     return success? "Yeah":"Sorry" + msg;
   }
}

3

您可以(无IDE):

List<MyClass> list;

var res = from a in list
          select String.Format("lala: {0} lili:{1}",a.success, a.msg);

或者你可以:

StringBuilder builder = new StringBuilder ();

foreach (a in list)
{
    builder.AppendFormat("lala: {0} lili:{1}\n",a.success, a.msg);
}

关于第二种可能性,如果您需要格式化,我认为我的建议会稍微快一些,但Habib的建议绝对更酷...


0

试试这个

for (int i = 0; i < list.Count; i++)
{
  var a = list[i];
  Console.WriteLine(builder.AppendFormat("lala: {0} lili:{1}\n", a.success, a.msg));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接