1

我需要像这样创建容器: Container.Add(RowIndex, ValueIndex);

我知道字典只有键和值,这对我不利。而且我不知道如何使用 2 个容器来创建行,索引我想要的方式。

所以例子:

Container[Row][Index]:
Container[0][0] = "Apple";
Container[0][1] = "Orange";
Container[1][0] = "Number";

因为我尝试使用这个容器来读取 sql。当我得到下一个结果时,它添加到当前行值 +1。和索引平均字段值。

在代码中:

                int row = 0;

                while (ObjReader.Read())
                {
                    foreach (var result in ObjReader)
                        ReadList.Add(row, result.ToString());

                    row++;
                }

                ObjReader.NextResult();

这是为了阅读

现在得到另一个类的结果

    public string Field(int row, int index)
    {
        return ReadList[row][index];
    }
4

4 回答 4

5

看来您正在寻找 a Listof Lists。

List<List<string>> results = new List<List<string>>();

while (haveMoreRows)
{
    List<string> nextRow = new List<string>();
    foreach (var item in currentRow)
        nextRow.Add(item.ToString());

    results.Add(nextRow);
}

现在您可以执行以下操作:results[2][1]获取第 2 列中第 3 行的值。

于 2012-08-30T18:23:31.517 回答
1

使用一个简单的对类:

public class Pair<P, T>
{
    public Pair() { }
    public Pair(P first, T second)
    {
        First = first;
        Second = second;
    }
    public P First { get; set; }
    public T Second { get; set; }
}

使用:

List<Pair<int, string>> ReadList = new List<Pair<int, string>>();
while (ObjReader.Read())
{
    foreach (var result in ObjReader)
        ReadList.Add(new Pair<int, string> {
            First = row, 
            Second = result.ToString()
        });

    row++;
}

ObjReader.NextResult();
于 2012-08-30T18:43:21.273 回答
0

尝试iteratortype anonymous

迭代器使用关键字yield

foreach (var result in ObjReader)
{
        yield return result.ToString();
}

你将拥有 IEnumerable

于 2012-08-30T18:23:25.280 回答
0

Sounds like what you really want is a DataTable. It's a collection of rows and columns specifically designed to represent a database table.

于 2012-08-30T18:52:12.453 回答