一、List转换成字符串有哪些方法
List作为C#中非常常用的数据结构,在进行转换成字符串的时候也是非常常见的操作。下面将介绍几种常用的方法:
1. 使用string.Join()方法
List<string> list = new List<string>(){"a", "b", "c"};
string str = string.Join("", list);
Console.WriteLine(str); //"abc"
可以看到,我们利用string.Join()
方法实现了将List转换成字符串,其中第一个参数是自定义的分隔符,如果不需要分隔符可以传入一个空字符串。
2. 使用StringBuilder类
List<string> list = new List<string>(){"hello", "world", "!"};
StringBuilder sb = new StringBuilder();
foreach(string s in list)
{
sb.Append(s);
}
string str = sb.ToString(); //"helloworld!"
利用StringBuilder
类可以实现对List的遍历和操作,将每一个元素拼接成字符串。
3. 使用Lambda表达式
List<string> list = new List<string>(){"1", "2", "3"};
string str = "";
list.ForEach(item => str += item);
Console.WriteLine(str); //"123"
使用Lambda表达式可以利用List的ForEach
方法实现对每一个元素进行操作,再将结果拼接成字符串。
二、List中含有对象如何转换成字符串
有时候,我们的List中不仅仅存储了字符串,还有一些自定义的对象。这时候,我们就需要重写ToString()
方法。
class Person
{
public string Name {get; set;}
public int Age {get; set;}
public override string ToString()
{
return Name + " " + Age;
}
}
List<Person> list = new List<Person>()
{
new Person(){Name="Tom", Age=20},
new Person(){Name="Jack", Age=22},
new Person(){Name="Lily", Age=18},
};
StringBuilder sb = new StringBuilder();
foreach(Person p in list)
{
sb.Append(p.ToString());
}
string str = sb.ToString(); //"Tom 20Jack 22Lily 18"
可以看到,我们在Person
类中重写了ToString()
方法,在遍历List的时候直接调用ToString()
方法即可将对象转换成字符串。
三、List转换成Json格式字符串
在进行Web开发时,我们通常需要将List转换成Json格式字符串传递给前端以便渲染。这时候,我们可以使用Json.Net库。
1. 将List转换成Json字符串
List<Person> list = new List<Person>()
{
new Person(){Name="Tom", Age=20},
new Person(){Name="Jack", Age=22},
new Person(){Name="Lily", Age=18},
};
string str = JsonConvert.SerializeObject(list);
Console.WriteLine(str); // "[{\"Name\":\"Tom\",\"Age\":20},{\"Name\":\"Jack\",\"Age\":22},{\"Name\":\"Lily\",\"Age\":18}]"
可以看到,我们利用了Json.Net库中的JsonConvert.SerializeObject()
方法将List转换成了Json格式的字符串。
2. 将Json字符串转换成List
string str = "[{\"Name\":\"Tom\",\"Age\":20},{\"Name\":\"Jack\",\"Age\":22},{\"Name\":\"Lily\",\"Age\":18}]";
List<Person> list = JsonConvert.DeserializeObject<List<Person>>(str);
foreach(Person p in list)
{
Console.WriteLine(p.Name + " " + p.Age);
}
与将List转换成Json字符串相反,我们使用JsonConvert.DeserializeObject()
方法将Json字符串转换成List。
四、List转换成XML格式字符串
类似于Json转换,我们将List转换成XML格式字符串也是非常常见的操作。在这里我们可以使用XmlSerializer
类。
1. 将List转换成XML格式字符串
List<Person> list = new List<Person>()
{
new Person(){Name="Tom", Age=20},
new Person(){Name="Jack", Age=22},
new Person(){Name="Lily", Age=18},
};
XmlSerializer xs = new XmlSerializer(typeof(List<Person>));
using(StringWriter sw = new StringWriter())
{
xs.Serialize(sw, list);
string str = sw.ToString();
Console.WriteLine(str);
// <?xml version="1.0" encoding="utf-16"?>
// <ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
// <Person>
// <Name>Tom</Name>
// <Age>20</Age>
// </Person>
// <Person>
// <Name>Jack</Name>
// <Age>22</Age>
// </Person>
// <Person>
// <Name>Lily</Name>
// <Age>18</Age>
// </Person>
// </ArrayOfPerson>
}
可以看到,我们使用XmlSerializer.Serialize()
方法将List转换成了XML格式字符串。
2. 将XML字符串转换成List
string str = @"<?xml version=""1.0"" encoding=""utf-16""?>
<ArrayOfPerson xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<Person>
<Name>Tom</Name>
<Age>20</Age>
</Person>
<Person>
<Name>Jack</Name>
<Age>22</Age>
</Person>
<Person>
<Name>Lily</Name>
<Age>18</Age>
</Person>
</ArrayOfPerson>";
XmlSerializer xs = new XmlSerializer(typeof(List<Person>));
using(StringReader sr = new StringReader(str))
{
List<Person> list = (List<Person>)xs.Deserialize(sr);
foreach(Person p in list)
{
Console.WriteLine(p.Name + " " + p.Age);
}
}
与将List转换成XML字符串相反,我们使用XmlSerializer.Deserialize()
方法将XML字符串转换成List。
总结
通过以上的介绍,我们可以看到C#中List转换成字符串的方法是非常丰富和灵活的,我们可以根据实际的需求选择不同的转换方式,从而更好地实现我们的业务逻辑。