Проверка на наличие вхождения в таблице.

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Подскажите что я не так делаю, пипец какой-то.

Код:
//    Сериализация XML документа и добавление результатов в таблицу;
    foreach (XmlNode item in items)
        {
            for (int a = 0; a < tableLinks.RowCount; a++)
            {
                var date = item.SelectSingleNode("pubDate").InnerText;
                    date = DateTime.Parse(date).ToString("dd-MM-yyyy");
                var link = item.SelectSingleNode("link").InnerText;
                var dateNow = DateTime.Now.ToString("dd-MM-yyyy");
              
                if (!tableLinks.GetCell("A",a).Contains(link))
                    {
                        tableLinks.AddRow(link + "\t" + date + "\t" + "");
                    }
            }

        }
Задача такая: если строка link находится в таблице => не сохраняем а в противном случаем добавляем в таблицу данные
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Блин ну что никто не поможет???

Я уже переделал код на две таблицы, чтобы добавлял в таблицу данные а потом сравнивал с другой таблицой и если не находил значение добавлял это значение во вторую таблицу.
Беда в том что где то я косячу на цикле. И мой снипет добавляет первую строку один раз, потом вторую 2, 3-4, 4-8 и так в том же духе.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Я это читал. У меня вариант две таблицы, с одной я беру значение в цикле, и сравниваю с другой таблицой. Если не находит вхождения, тогда добавляет в ту в которой проверяет.
Беда в том, что где то надо либо break ставить либо что то еще. Потому что с десяти записей которые проверяються, у меня добавляеться 10 тис записей.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Код:
    for (int a = 0; a < tableTmp.RowCount; a++)
    {
        var cell = tableTmp.GetRow(a).ToArray();
       
        for (int b = 0; tableLinks.RowCount !=0; b++)
        {
            if (tableLinks.GetCell(0,b) != cell[0])
                tableLinks.AddRow(cell[0] + "\t" + cell[1] + "\t" + cell[2]);
        }
    }
Вот так я пытаюсь сравнить данные. Но это не то.
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 730
Баллы
113
надо исправить код как-то так
C#:
    for (int a = 0; a < tableTmp.RowCount; a++)
    {
        var cell = tableTmp.GetRow(a).ToArray();
        // создаем флаг надо ли нам добавлять
        var shouldAdd = true;
        for (int b = 0; tableLinks.RowCount !=0; b++)
        {
            // проверяем всю таблицу, не содержится ли то что уже есть
            if (tableLinks.GetCell(0,b) == cell[0])
            {
                shouldAdd = false;
                break;
            }
        }
        // если надо добавлять то добавляем.
        if (shouldAdd)
              tableLinks.AddRow(cell[0] + "\t" + cell[1] + "\t" + cell[2]);
    }
 
  • Спасибо
Реакции: aluminoter

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
надо исправить код как-то так
C#:
    for (int a = 0; a < tableTmp.RowCount; a++)
    {
        var cell = tableTmp.GetRow(a).ToArray();
        // создаем флаг надо ли нам добавлять
        var shouldAdd = true;
        for (int b = 0; tableLinks.RowCount !=0; b++)
        {
            // проверяем всю таблицу, не содержится ли то что уже есть
            if (tableLinks.GetCell(0,b) == cell[0])
            {
                shouldAdd = false;
                break;
            }
        }
        // если надо добавлять то добавляем.
        if (shouldAdd)
              tableLinks.AddRow(cell[0] + "\t" + cell[1] + "\t" + cell[2]);
    }

Спасибо все четко работает, так как надо.
Единственное я добавил еще проверку, если вторая таблица пустая, тогда добавить все строки, без проверки.
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)