Использование DataTables и сохранение значений - PullRequest
0 голосов
/ 15 января 2010

Я новичок в c # .net. У меня есть метод, где я передаю параметры в цикле, и для каждого параметра возвращаются разные строки. строки (которые имеют данные разных типов данных) из базы данных. Я хочу хранить эти строки данных где-то вроде arraylist. и использовать для дальнейшего производства.

Пожалуйста, скажите мне, как это сделать. enter code here

/ * в идеале функция Get_ChildAndParentInfo (int pointid) возвращает список массивов, но как работать со списком массивов, содержащим datarows с различными типами данных * /

public static ArrayList Get_ChildAndParentInfo(int PointID) 
    {
        string Sp_name = "USP_Get_Parents";
        SqlParameter[] Parameters = new SqlParameter[1];
        Parameters[0] = new SqlParameter("@IntPointId", DbType.Int32);
        DataTable dtChildInfo = new DataTable();
        ArrayList ChildNParents = new ArrayList();
        ArrayList Collect = new ArrayList();

        int i = 0;


        Parameters[0].Value = PointID;
              dtChildInfo = DataLayer.getdata1(Sp_name, Parameters);

            //  for (i = 0; i < dtChildInfo.Rows.Count; i++)
            //  {
            //      ArrayList temp = new ArrayList();
            //      for (int j = 0; j < dtChildInfo.Columns.Count; j++)
            //      {
            //          temp.Add(dtChildInfo.Rows[0][j]);
            //      }
            //      //Collect[i] = temp;
            //      Collect.Insert(i, temp);
            //      temp.Clear();
            //}


              //PrintValues(Collect);
        return (Collect);
    }
    public static ArrayList send_SMS() **///ENTRY POINT FUNCTION**
    {

        ArrayList Points = new ArrayList();
        DataTable PathInfo = new DataTable();
        ArrayList ParentInfo = new ArrayList();
        PathInfo = Get_ActivePath(); 
        Points = GetPoints(PathInfo);**//returns 6,3**
        for (int i = 0; i < Points.Count; i++)
        {
            //ParentInfo = Get_ChildAndParentInfo();

            ParentInfo = Get_ChildAndParentInfo(Convert.ToInt32(Points[i]));

           PrintValues(ParentInfo);
        }


        return ParentInfo;

    }

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Похоже, вы пытаетесь вернуть ArrayList из ArrayLists. Было бы лучше вернуть универсальный список вместо ArrayList.

ArrayList Collect = new ArrayList();

Должно быть

List<CustomClass> Collect = new List<CustomClass>();

Пользовательский класс:

class CustomClass
{
    private ArrayList _ChildData;
    public void Insert(ArrayList Data)
    {
        _ChildData.Add(Data);
    }
    public ArrayList ChildData {
        get { return _ChildData; }
    }
}

(Пожалуйста, прости мой плохой синтаксис C #. Я парень VB.NET.)

0 голосов
/ 15 января 2010
ArrayList list = new ArrayList();

//inside your loop add:

list.Add(myparameter);

Вы можете создавать различные списки в зависимости от типа данных, которые у вас есть.

EDIT:

Создайте класс, который содержит свойства для каждого типа данных, который содержит строка, а затем создайте список List<MyObject>, после чего вы можете добавить новый объект для каждого элемента, назначив каждому столбцу для каждой строки правильное свойство.

Вроде таких:

mylist.Add(new MyObject() { MyInt = datatable.rows[i][j].Value; //etc })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...