Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Поиск в таблице DataSet


Автор: Colloseum 28.7.2007, 17:13
Написал такой вот код для поиска Primary Key в таблице и дальнейшего редактирования записи.
Оно работает нормально, но как правильно такие операции выполнять.
Поле по которому производится поиск уникально, так что дубликатов быть не должно.

Код

        int PKValue = -1;
        
        DataRow[] row = ds.Tables["Countries"].Select("RegionName = 'Россия' ");
        
        foreach (DataRow searchRow in row)
            PKValue = (int)searchRow["ID"];

        ds.Tables["Countries"].Rows.Find(PKValue).ItemArray = aValues;


Автор: mr.DUDA 28.7.2007, 19:45
Да всё правильно вроде. Только непонятно, что в aValues. И если найдена одна запись, то цикл foreach можно остановить вообще-то..

Автор: ivashkanet 28.7.2007, 19:52
Что-то я не понимаю зачем тут цикл foreach вообще?

Код

        DataRow[] rows = ds.Tables["Countries"].Select("RegionName = 'Россия' ");
        
        if (rows.Count >0)
        {
            int PKValue = (int)row[0]["ID"]; // Каждая страна уникальна в таблице
            ds.Tables["Countries"].Rows.Find(PKValue).ItemArray = aValues;
        }

Автор: Colloseum 29.7.2007, 08:05
Не работает, rows не содержит Count 

Error    1    'System.Array' does not contain a definition for 'Count'    C:\Documents and Settings\Администратор\Мои документы\Visual Studio 2005\Projects\Dict_Region_ClassProcess\Dict_Region_ClassProcess\Classes.cs    59    18    Dict_Region_ClassProcess

foreach я тоже дкмаю не нужн но не могу без него переделать код.

А это ж массив значений object[] aValues для изменения значений объекта.

Автор: Exception 29.7.2007, 11:50
Можно было догадаться, что имелось ввиду свойство Length. Просто в одних языках длину массива зовут count, в других -- length, запутаться элементарно.
А правильно будет вот так:
Код
DataRow[]  rows = ds.Tables ["Countries"].Select  ("RegionName = 'Россия'");
if  (rows.Length > 0)
{
    int PKValue = (int) rows [0]["ID"];
    ds.Tables ["Countries"].Rows.Find (PKValue).ItemArray = aValues;
}

Автор: ivashkanet 29.7.2007, 15:07
Цитата(Exception @  29.7.2007,  11:50 Найти цитируемый пост)
Можно было догадаться, что имелось ввиду свойство Length.

Ага ;-)
Цитата(Exception @  29.7.2007,  11:50 Найти цитируемый пост)
Просто в одних языках длину массива зовут count, в других -- length, запутаться элементарно.

Нее, язык один и тот же smile Просто я давно не имел дело с массивами, все, понимаешь ли, коллекции, а там Count

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)