powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование типов данных.
25 сообщений из 26, страница 1 из 2
Преобразование типов данных.
    #38208712
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу преобразовать общий тип данных в полученный в результате запроса тип данных.
Определяю общий тип данных:
Код: c#
1.
object[] axis_x;



Потом получаю нужный тип данных:
Код: c#
1.
2.
3.
4.
private void comboBoxAxisX_SelectedIndexChanged(object sender, EventArgs e)
 {     
        Type type =  data_table.Columns[comboBoxAxisX.Text].DataType;
  }



А вот теперь не знаю как преобразовать массив объектов в нужный мне тип данных. Как это лучше сделать?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38208796
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Код: c#
1.
2.
3.
4.
Type type =  data_table.Columns[comboBoxAxisX.Text].DataType;

var array = Array.CreateInstance(type, axis_x.Length);
Array.Copy(axis_x, array, axis_x.Length);
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209100
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Сделал так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
private void comboBoxAxisX_SelectedIndexChanged(object sender, EventArgs e)
 {
            Type type =  data_table.Columns[comboBoxAxisX.Text].DataType;
            var array = Array.CreateInstance(type, data_table.Rows.Count);
            axis_x = new object[data_table.Rows.Count];
            Array.Copy(axis_x, array, data_table.Rows.Count);
  }



На некоторых полях (double, int) получаю эксэпшн:
At least one element in the source array could not be cast down to the destination array type.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209167
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7На некоторых полях (double, int) получаю эксэпшн:
At least one element in the source array could not be cast down to the destination array type.

скорее всего там DbNull.Value
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209233
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да но в строке:
Код: c#
1.
var array = Array.CreateInstance(type, data_table.Rows.Count);


нет ошибок, значит массив построился.

а в строке где выпадает эксэпшн мы только копируем:
Код: c#
1.
Array.Copy(axis_x, array, data_table.Rows.Count -1); //exception
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209254
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

ну да, в результатах запроса вместо некоторых значений стоят DBNull.Value (= NULL в базе). При копировании не получается преобразовать это значение в целевой тип.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209270
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как можно исключить NULL поля из массива?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209349
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и все таки я чего то не понимаю
тут мы создали пустой массив:
var array = Array.CreateInstance(type, data_table.Rows.Count);
тут мы скопировали пустой массив в пустой массив - данными мы его не наполняли.
Array.Copy(axis_x, array, data_table.Rows.Count);
по идее все ячейки массива должны быть либо 0 либо null.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209564
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

тогда смысл вашего кода вообще в чем? Я думаю, что он и обычный null не может преобразовать в 0.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209599
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смысл в том чтоб на основе типа поля привести массив объектов к зтому типу, а затем заполнить зтот массив данными из колонки.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209611
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

так а зачем вы копируете из пустого в пустой? Копируйте из колонки...
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209644
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я тоже думал копировать сразу в array. но array это локальный массив, а мне нужен глобальный массив потому, что в одном методе я заполняю его а в другом методе работаю с ним.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209649
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

зачем вы копируете данные их пустого массива? Удалите тогда эту строчку, зачем она вам?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209686
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я то удалил, но как создать глобальный массив нужного мне типа?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209710
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

var array = Array.CreateInstance(type, data_table.Rows.Count);
вот эта строчка массив создает.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209755
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouchjenya7,

var array = Array.CreateInstance(type, data_table.Rows.Count);
вот эта строчка массив создает.

хорошо, массив мы создали, теперь как его заполнить вдругом методе? У этого массива локальный скоп, а глобальный var С# не позволяет создавать.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209766
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

var - не динамический тип, он вычисляется на момент компиляции если что.
В данном случае он = Array
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209779
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouchjenya7,

var - не динамический тип, он вычисляется на момент компиляции если что.
В данном случае он = Array
так как же передать этот массив дальше?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209789
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Lelouchjenya7,

var array = Array.CreateInstance(type, data_table.Rows.Count);
вот эта строчка массив создает.

хорошо, массив мы создали, теперь как его заполнить вдругом методе? У этого массива локальный скоп, а глобальный var С# не позволяет создавать.Подозреваю, что не надо создавать массив в одном месте, а заполнять в другом. Опишите свою задачу, а не то, как Вы её решаете.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209810
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ситуация такая:
Есть комбобокс с именами колонок. При выборе колонки я хочу заполнить массив типа этой колонки данными этой колонки. вот псевдокод:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
private void PopulateArray(Type type)
        {
            int idx = 0;
            switch(type.Name)
            {
                case "String" :
                    string[] str_arr = new string[data_table.Rows.Count];
                    foreach (DataRow row in data_table.Rows)
                    {
                        str_arr[idx++] = row["ColName"].ToString();
                    }
                break;
                case "Int32":
                     int[] int_arr = new int[data_table.Rows.Count];
                     foreach (DataRow row in data_table.Rows)
                     {
                         int_arr[idx++] = Convert.ToInt32(row["ColName"].ToString());
                     }
                break;
            }
        }
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38209870
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7, и как этот массив планируется использовать?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38210132
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
массив зто данные для графика, например так
Код: c#
1.
2.
3.
4.
 for (int i = 0; i < array.Length; i++) 
 {
       chart1.Series[0].Points.AddXY(i, array[i]);
}
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38212606
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе метод chart1.Series[0].Points.AddXY(i, array[i]);
принимает массив объектов, но при размере массива в 500000 комп виснет или жалуется out of memory.
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38212673
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

ты явно занимаешься хернёй, почему не биндишь чарт напрямую к датасету? зачем тебе этот массив?
...
Рейтинг: 0 / 0
Преобразование типов данных.
    #38213002
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationjenya7,

ты явно занимаешься хернёй, почему не биндишь чарт напрямую к датасету? зачем тебе этот массив?

Во первых не знаю как. Во вторых мне нужна некоторая логика. Нужно выставить данные по оси X и по оси Y. Например прошел/не прошел прибор по дате (pass/fail - date).
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование типов данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]