Прошу помощи С#

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8
Есть такой сниппет, его задача:
Искать совпадения из определенного столбца таблицы1 в определенном столбце таблицы2, когда находит совпадение, нужно записать номер строки из таблицы2 в которой нашлось совпадение.
Подскажите пожалуйста, что не так? Выдает ошибку.

IZennoTable tblOne = project.Tables["tblOne"];
IZennoTable tblTwo = project.Tables["tblTwo"];
IZennoList lstResult = project.Lists["result"];

for(int i=0; i<tblOne.RowCount; i++){
string cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

for (int n=0; n<tblTwo.RowCount; n++) {
string cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
if (cellTwo==cellOne){
project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
lstResult.Add(n);
break;
}
}
}


Если из него убрать:
lstResult.Add(n);

То он выполняется, но в лог ничего не выводит, а мне надо что бы в список записывал!

Помогите пожалуйста=(
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43
lstResult.Add(n); n - если я не ошибаюсь, должен быть типа string
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43
А какую инфу вы хотите видеть в логе?
project.SendInfoToLog("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}, "+cellTwo+", "+i+", "+n, "info", true);
Так не пойдет?
 

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8
lstResult.Add(n); n - если я не ошибаюсь, должен быть типа string
Не помогло(

IZennoTable tblOne = project.Tables["tblOne"];
IZennoTable tblTwo = project.Tables["tblTwo"];
IZennoList lstResult = project.Lists["result"];

for(int i=0; i<tblOne.RowCount; i++){
string cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

for (int n=0; n<tblTwo.RowCount; n++) {
string cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
if (cellTwo==cellOne){
project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
lstResult.Add(String.Format(n));
break;
}
}
}
 

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8
А какую инфу вы хотите видеть в логе?
project.SendInfoToLog("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}, "+cellTwo+", "+i+", "+n, "info", true);
Так не пойдет?
Так мало того, что в лог ничего не выдается, так мне нужно, что бы в файл записывалась номер строки, в которой найдено совпадение.
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43
lstResult.Add(Convert.ToString(n));
 

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8
Стоит добавить список, как сниппет перестает выполняться.
IZennoList lstResult = project.List["Result"];
Вот в таком виде выполняется, но в лог почему то ничего не выводится:
IZennoTable tblOne = project.Tables["tblOne"];
IZennoTable tblTwo = project.Tables["tblTwo"];

for(int i=0; i<tblOne.RowCount; i++){
string cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

for (int n=0; n<tblTwo.RowCount; n++) {
string cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
if (cellTwo==cellOne){
project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
break;
}
}
}


А стоит добавить список в который нужно добавить текст и IZennoList lstResult = project.List["Result"]; сразу перестает работать.=(((( Вообще не понимаю в чем дело, че только уже не пробовал, не добиться нужного, выручайте=(

IZennoTable tblOne = project.Tables["tblOne"];
IZennoTable tblTwo = project.Tables["tblTwo"];
IZennoList lstResult = project.List["Result"];

for(int i=0; i<tblOne.RowCount; i++){
string cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

for (int n=0; n<tblTwo.RowCount; n++) {
string cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
if (cellTwo==cellOne){
project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
lstResult.Add(Convert.ToString(n));
break;
}
}
}
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43
Смотрите что при выполнении кода в Логе пишет программа.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 956
Благодарностей
781
Баллы
113
  • Спасибо
Реакции: Solus

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 956
Благодарностей
781
Баллы
113
не знаю точно, но попробуй объявлять переменные string cellOne и вторую вне цикла, потом просто присваивай значения без объявления, а так вроде всё верно
 

vtsogood

Client
Регистрация
23.03.2016
Сообщения
36
Благодарностей
1
Баллы
8
не знаю точно, но попробуй объявлять переменные string cellOne и вторую вне цикла, потом просто присваивай значения без объявления, а так вроде всё верно
Извините, но я еще пустоват в С#, не могли бы написать как именно сделать?
 

Aleksk

Client
Регистрация
19.06.2013
Сообщения
31
Благодарностей
23
Баллы
8
Код:
IZennoTable tblOne = project.Tables["tblOne"];
IZennoTable tblTwo = project.Tables["tblTwo"];
IZennoList lstResult = project.Lists["Result"];

string cellOne =String.Empty;
string cellTwo =String.Empty;   

for(int i=0; i<tblOne.RowCount; i++){
cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

for (int n=0; n<tblTwo.RowCount; n++) {
cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
if (cellTwo==cellOne && cellOne!="" ){
project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
lstResult.Add(Convert.ToString(n));
break;
}
}
}
 
  • Спасибо
Реакции: vtsogood

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
119
Баллы
43
И так:

Код:
var tblOne = project.Tables["tblOne"];
var tblTwo = project.Tables["tblTwo"];
var lstResult = project.Lists["Result"];

lock(SyncObjects.TableSyncer)
{
    for(int i=0; i<tblOne.RowCount; i++)
    {
        var cellOne = tblOne.GetCell(0,i); //в первом столбце первой таблицы

        for (int n=0; n<tblTwo.RowCount; n++)
        {
            var cellTwo = tblTwo.GetCell(0,n); //в первом столбце второй таблицы
            if (cellTwo==cellOne && cellOne!="" )
            {
                lstResult.Add(Convert.ToString(n));
                //project.SendInfoToLog(String.Format("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}", cellTwo, i, n));
                project.SendInfoToLog("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}");
                //project.SendInfoToLog("Нашли совпадение: символы {0} в строке таблицы 1 №{1} и в строке таблицы 2 №{2}, "+cellTwo+", "+i+", "+n);
                return "так тоже всё работает";
            }
        }
    }
}
return null;
 
  • Спасибо
Реакции: vtsogood

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