我有多个List<string>
个对象(数据库每列1个),我在使用数据读取器时将列的所有数据添加到初始记录之外。我如何访问这些其他元素?它是否像数组一样工作,我可以循环一个0索引并加1来获取列表的下一个元素?无论如何都要按元素搜索?
答案 0 :(得分:1)
StringBuilder
用于字符串连接。一旦你将两个字符串连接在一起,就不可能确定一个字符串的结束位置和其他字符串的开始位置。
您似乎可以使用List<string>
。然后你可以做这样的事情:
var list = new List<string>();
list.Add("Hello");
list.Add("World");
foreach (var item in list)
{
Console.WriteLine(item);
}
更新:
似乎你有类似的东西:
var list1 = new List<string>();
var list2 = new List<string>();
var list3 = new List<string>();
using(SqlDataReader rdr = cmd.ExecuteReader()) {
while( rdr.Read() ) {
list1.Add(rdr.GetString(0));
list2.Add(rdr.GetString(1));
list3.Add(rdr.GetString(2));
}
}
//iterate through saved lists
for(int i=0; i<list1.Count; i++)
{
var c1 = list1[i];
var c2 = list2[i];
var c3 = list3[i];
Console.WriteLine(c1 + " " + c2 + " " + c3);
}
答案 1 :(得分:0)
喜欢这个吗?
StringBuilder
sb1 = new StringBuilder(),
sb2 = new StringBuilder(),
sb3 = new StringBuilder();
using(SqlDataReader rdr = cmd.ExecuteReader()) {
while( rdr.Read() ) {
sb1.AppendLine( rdr.GetString(0) );
sb2.AppendLine( rdr.GetString(1) );
sb3.AppendLine( rdr.GetString(2) );
}
}
答案 2 :(得分:0)
您的问题不是很明确,但根据StringBuilder
的{{3}},可以查看具有Chars
属性的特定字符,或者您可以调用{{1在它上面查看你想要的字符串。
答案 3 :(得分:0)
不,StringBuilder没有那种实用程序。
我建议你首先在List中组装你的“string”,然后在你完成后使用Join连接它们。如果你这样做,你可以通过访问数组的元素来访问你想要的任何“列”。
例如
var list = new List<string>();
list.Add("Column0");
list.Add("Column1 that references Column0 (which contains '" + list[0] + "')");
string finalString = string.Join(",", list.ToArray());
答案 4 :(得分:0)
StringBuilder的设计不允许针对它进行每个单独的操作。其目的是通过大量字符串操作来缓解性能问题。在C#中,字符串是不可变的,因此大量的字符串操作会使您拥有大量具有隐式开销的String对象。
如果您需要以索引方式访问数据结构中的条目,您可以查看以下内容:
List<String> if you don't know the exact length in advance
String[] if you do know the length in advance