2013-04-11 166 views
2

我有一个名单,我想将其转换成字符串。包括我已添加到列表中的所有字符串和数据。如何将列表<Class>转换为字符串?

这是我的课

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

} 

然后我宣布它以这种方式:

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

所以,我怎么可以转换列表中的字符串?

感谢您的任何帮助。

+5

你期待什么结果呢?使用'string.Join'和'Enumerable.Select'可能有一个简单的解决方案,但是如果你不告诉我们字符串的转换应该返回什么,很难给出一个好的答案。 – CodesInChaos 2013-04-11 10:04:24

回答

2

这里有一个方法来convert List<Class> to String

和我追加的方式convert the converted String back to 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,我发现JSON格式经常用于各种api ,

和JSON是把数据串并回头数据的强大方便的方式,它可以自动把任何类型的对象,数组,你能想到的串类,自动折回。

该关键字是JSON Serialize Deserialize,谷歌它,你可以找到许多现成的包。

而且我知道的著名的它一个是NewtonSoft JSON,和微软都可能有自己的JOSN过程库,太。

例如像:

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

如果你想连接列表中的所有msg那么你可以使用string.Join为:

string str = string.Join(",", list.Select(r=> r.msg)); 
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); 
} 

[R egarding第二个可能性,如果你需要的格式,我认为我的建议是稍快,但Habib的一个肯定是凉......