Синтаксис исключительного набора с Linq, VB - PullRequest
1 голос
/ 06 мая 2009

Я хотел бы сделать вычитание наборов на основе критериев. Псевдо-запрос будет выглядеть так:

select table1.columnn1
      ,table1.column2
  from table1, table2
 where (table1.column1.value1 not in table2.column1
        and
        table1.column2.value2 not in table2.column2)

Я могу сделать это примерно здесь:

dim list = From tbl1 In table1 Where tt.column1 ...

И оттуда я не знаю, что делать.

1 Ответ

2 голосов
/ 06 мая 2009

Посмотрите на стандартный оператор запросов Except в LINQ. Это создает разность множеств двух последовательностей.

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.except.aspx

Вы также можете использовать оператор Contains для достижения желаемого, как показано в примере ниже:

dim table2Col1 = from t in table2 select t.column1
dim table2Col2 = from t in table2 select t.column2

dim results = _
   from t in table1 _
   where not table2Col1.Contains(t.column1) _
   and  not table2Col2.Contains(t.column2) _
   select new with { .column1=t.column1, .column2=t.column2 }
...