2013-04-11 52 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的一個肯定是涼......