powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / linq и 2 datatable
4 сообщений из 4, страница 1 из 1
linq и 2 datatable
    #38039854
HadeS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую форумчане!

Дело обстоит так, есть 2 таблицы (MyTable(inum) и MSTable(inum, iopt)) т.к. одна таблица находится на серваке с MYSql, а вторая с MSsql (почему так сделано не знаю, мне остается только пожинать плоды), я слил их в программе в разные DataTable.

Задача: необходимо из таблицы MSTable удалить все записи у которых inum не входит в MyTable. На sql я бы сделал так:
Код: sql
1.
delete from MSTable where inum not in (select * from MyTable)


Но как реализовать not in в linq так и не понял.
...
Рейтинг: 0 / 0
linq и 2 datatable
    #38039939
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечисление айдишников спасёт отца невиномысской демократии.
...
Рейтинг: 0 / 0
linq и 2 datatable
    #38040124
HadeS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел метод Intersect
linq строка получилась следующего вида
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var res  = (from y in MSTable.AsEnumerable() select y.Field<string>("inum")).Intersect(
from j in MyTable.AsEnumerable() select j.Field<string>("inum"));

// тут отправляю  результат во временную таблицу для дальнейшей обработки
DataTable dt1 = new DataTable("res");
dt1.Columns.Add("inum");
dt1.Columns.Add("iopt");

foreach (var dtr in except)
{
   dt1.Rows.Add(dtr);
}



В результате inum заполнен, а вот iopt пустое.
...
Рейтинг: 0 / 0
linq и 2 datatable
    #38040809
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HadeS,

считая, что inum - есть уникальный ключ в таблице:

Код: c#
1.
2.
3.
4.
MSTable.Rows.Cast<DataRow>().Select(a=> a["inum"].ToString()).Except(MyTable.Rows.Cast<DataRow>().Select( a=> a["inum"].ToString())).ToList().ForEach(delegate(string Resultinum)
            {
                SQLRun("delete MSTable where inum = " + Resultinum.ToString());
            });
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / linq и 2 datatable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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