访问List的内容

时间:2014-02-03 20:37:58

标签: c#

我有多个List<string>个对象(数据库每列1个),我在使用数据读取器时将列的所有数据添加到初始记录之外。我如何访问这些其他元素?它是否像数组一样工作,我可以循环一个0索引并加1来获取列表的下一个元素?无论如何都要按元素搜索?

5 个答案:

答案 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