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

Дело обстоит так, есть 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
15.11.2012, 15:29
    #38039939
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
linq и 2 datatable
Перечисление айдишников спасёт отца невиномысской демократии.
...
Рейтинг: 0 / 0
15.11.2012, 17:05
    #38040124
HadeS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
linq и 2 datatable
нашел метод 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
16.11.2012, 05:30
    #38040809
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
linq и 2 datatable
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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / linq и 2 datatable / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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