Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как присвоить массиву целых столбец БД с числами? неПрименяяПочленногоКопированияВцикле:C# 
V
    Опции темы
sedoy
Дата 18.3.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



Можно ли, если можно то как писвоить массиву целых чисел - столбец с таблицы базы данных,
 не производя почленного присваивания в цикле? По сути ведь столбец и есть массивом целых.

Я пытаюсь сделать это так:
int[] id = mydataset.Tables["Product"].Column[idProduct];

 но выдает естественно ошибку: Cannot implicitly convert type 'System.Data.DataColumn' to 'int[]'
Подскажите как это сделать правильно


PM MAIL   Вверх
Voyager
Дата 18.3.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: нет
Всего: 18



Нет, так не получится, нужен цикл (или как вариант использовать Linq в Framework 3.5).
PM   Вверх
sedoy
Дата 18.3.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 23.1.2008

Репутация: нет
Всего: нет



У меня .NET version:2.0 - в моем случае без цикла никак нельзя ?
В моей таблице с десяток строк, но если их будет очень много - это каждый раз прийдется обращаться к данным в столбце чтоб скопировать, из-за этого все начнет тормозить.
PM MAIL   Вверх
Voyager
Дата 18.3.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: нет
Всего: 18



Можно в принципе без явного цикла, как вариант:

Код

            DataRow[] Rows = new DataRow[mydataset.Tables["Product"].Rows.Count];
            mydataset.Tables["Product"].Rows.CopyTo(Rows, 0);
            int[] ID = Array.ConvertAll(Rows, new Converter<DataRow, int>(DataRowToInt));
        
        ...

        public static int DataRowToInt(DataRow Row)
        {
            return Convert.ToInt32(Row["ID"].ToString());
        }

PM   Вверх
marcusmae
Дата 23.3.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 2
Всего: 39



sedoy, от цикла не уйти никак. С другой стороны, не всегда так уж необходим сразу весь массив int[], его можно создавать "на лету" по мере того, какие требуются элементы. На этот счёт в .NET существует пара концептуальных вещей - перечислители (IEnumerator) и yield return.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
akizelokro
Дата 14.4.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



с запозданием предложу индексатор

Код

public int this(int index)
{
    get
    {
        return (int)mydataset.Tables["Product"].Row[index].Column[idProduct].Value;
    }
    set
    {
           mydataset.Tables["Product"].Row[index].Column[idProduct].Value = value;
     }
}


Получается, конечно, не строгий массив целых, но в рамках поставленной задачи отработать должно.

Это сообщение отредактировал(а) akizelokro - 14.4.2008, 10:59


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.