LinqToSql , LinqToObjects, Join
От: snaphold  
Дата: 12.05.15 14:48
Оценка:
Привет

есть таблица в базе типа А и есть массив объектов типа Б.
Как оптимальней сделать джойн по 3 полям между 2 коллекциями?

т.е. получается одна коллекция LinqToSql а вторая LinqToObjects
Re: LinqToSql , LinqToObjects, Join
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 12.05.15 18:22
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Привет


S>есть таблица в базе типа А и есть массив объектов типа Б.

S>Как оптимальней сделать джойн по 3 полям между 2 коллекциями?

Было
Автор: ronik
Дата: 30.03.15
Re[2]: LinqToSql , LinqToObjects, Join
От: snaphold  
Дата: 14.05.15 12:40
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, snaphold, Вы писали:


S>>Привет


S>>есть таблица в базе типа А и есть массив объектов типа Б.

S>>Как оптимальней сделать джойн по 3 полям между 2 коллекциями?

_>Было
Автор: ronik
Дата: 30.03.15


а если надо сделать условие на джойн
a.field = b.field and 
a.field2 = b.field2 and 
a.field3 != b.field3


как такое замутить? там везде идет contains по анонимному типу
Re[3]: LinqToSql , LinqToObjects, Join
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 14.05.15 14:01
Оценка:
Здравствуйте, snaphold, Вы писали:

S>а если надо сделать условие на джойн

S>
S>a.field = b.field and 
S>a.field2 = b.field2 and 
S>a.field3 != b.field3
S>


S>как такое замутить? там везде идет contains по анонимному типу


А зачем такой странный JOIN может понадобиться?
Re[3]: LinqToSql , LinqToObjects, Join
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 14.05.15 15:42
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Здравствуйте, scale_tone, Вы писали:


_>>Здравствуйте, snaphold, Вы писали:


S>>>Привет


S>>>есть таблица в базе типа А и есть массив объектов типа Б.

S>>>Как оптимальней сделать джойн по 3 полям между 2 коллекциями?

_>>Было
Автор: ronik
Дата: 30.03.15


S>а если надо сделать условие на джойн

S>
S>a.field = b.field and 
S>a.field2 = b.field2 and 
S>a.field3 != b.field3
S>


S>как такое замутить? там везде идет contains по анонимному типу

Попробуй

var result = from x in entity
   join y in entity2 on new { x.field1, x.field2,true } equals new { y.field1, y.field2,x.field3 !=x.field3  }

Нет такая конструкция не проходит

 join pet in C2 on new { ID=person.ID,fl=true } equals new {ID=pet.ID,fl=(pet.Flag==person.ID) }

Ругается на person.ID

Но можно извернуться через промежуточное соединение для полученя поля b.field3
и солнце б утром не вставало, когда бы не было меня
Отредактировано 15.05.2015 8:06 Serginio1 . Предыдущая версия . Еще …
Отредактировано 14.05.2015 16:07 Serginio1 . Предыдущая версия .
Re[4]: LinqToSql , LinqToObjects, Join
От: snaphold  
Дата: 15.05.15 05:40
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, snaphold, Вы писали:


S>>а если надо сделать условие на джойн

S>>
S>>a.field = b.field and 
S>>a.field2 = b.field2 and 
S>>a.field3 != b.field3
S>>


S>>как такое замутить? там везде идет contains по анонимному типу


_>А зачем такой странный JOIN может понадобиться?


нужно удалить дубли из таблицы
Re[5]: LinqToSql , LinqToObjects, Join
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 15.05.15 06:01
Оценка:
Здравствуйте, snaphold, Вы писали:

_>>А зачем такой странный JOIN может понадобиться?


S>нужно удалить дубли из таблицы


Расскажите подробно суть задачи.
Re[6]: LinqToSql , LinqToObjects, Join
От: snaphold  
Дата: 15.05.15 06:24
Оценка:
Здравствуйте, scale_tone, Вы писали:

_>Здравствуйте, snaphold, Вы писали:


_>>>А зачем такой странный JOIN может понадобиться?


S>>нужно удалить дубли из таблицы


_>Расскажите подробно суть задачи.


есть таблица конфликтов некой сущности. Конфликт определяется по 3 из 5 полей в таблице.
пользователь выбирает айдишники записей, которые он хочет удалить.
если после удаления в таблице не остается конфликтующих записей, то их надо переместить в другую таблицу.
собственно мне надо получить записи, которые имеют такие же поля, как удаляемые, но исключить при этом удаляемые, т.к. это делается всё в одной транзакции
Re[3]: LinqToSql , LinqToObjects, Join
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.05.15 08:16
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Здравствуйте, scale_tone, Вы писали:


_>>Здравствуйте, snaphold, Вы писали:


S>>>Привет


S>>>есть таблица в базе типа А и есть массив объектов типа Б.

S>>>Как оптимальней сделать джойн по 3 полям между 2 коллекциями?

_>>Было
Автор: ronik
Дата: 30.03.15


S>а если надо сделать условие на джойн

S>
S>a.field = b.field and 
S>a.field2 = b.field2 and 
S>a.field3 != b.field3
S>


S>как такое замутить? там везде идет contains по анонимному типу

var result = from x in entity
join y in entity2 on new {field1= x.field1,field2= x.field2} equals new { field1=y.field1, field2=y.field2}
  select new {field1=  x.field1,field2=x.field2,field3= x.field3,field3y=y.field3};

var result2 = from x in result
 where x.field3 != x.field3y
    select new {  x.field1,x.field2};
и солнце б утром не вставало, когда бы не было меня
Re[7]: LinqToSql , LinqToObjects, Join
От: scale_tone Норвегия https://scale-tone.github.io/
Дата: 15.05.15 16:50
Оценка:
Здравствуйте, snaphold, Вы писали:

S>есть таблица конфликтов некой сущности. Конфликт определяется по 3 из 5 полей в таблице.

S>пользователь выбирает айдишники записей, которые он хочет удалить.
S>если после удаления в таблице не остается конфликтующих записей, то их надо переместить в другую таблицу.
S>собственно мне надо получить записи, которые имеют такие же поля, как удаляемые, но исключить при этом удаляемые, т.к. это делается всё в одной транзакции

Ну, в общем, боюсь, что все равно плохо понял. Особенно фразу "если после удаления в таблице не остается конфликтующих записей, то их надо переместить в другую таблицу".
Предложил бы сделать джойн одним из предложенных методов
Автор: ronik
Дата: 30.03.15
, а потом остальную фильтрацию делать либо отдельным Where(), либо вообще в памяти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.