SomeDelegate a = Inc;
Func<int, int> b = Inc;
не подходит для
SomeDelegate a = new SomeDelegate(Inc); // no cast here
Func<int, int> b = new Func<int, int>(Inc);
Вы не можете использовать экземпляр SomeDelegate для функции Func & lt; int, int & gt; по той же причине вы не можете передать строку в словарь & lt; int, int & gt; - они разные.
Это работает:
Func<int, int> c = x => a(x);
, который является синтаксическим сахаром для
class MyLambda
{
SomeDelegate a;
public MyLambda(SomeDelegate a) { this.a = a; }
public int Invoke(int x) { return this.a(x); }
}
Func<int, int> c = new Func<int, int>(new MyLambda(a).Invoke);
Другой вариант заключается в использовании EXCEPT
select a
from temp
except
select a
from temp2;
Вы также можете использовать NOT EXISTS
:
SELECT t.*
FROM temp t
WHERE NOT EXISTS (SELECT 1 FROM temp2 t2 WHERE t2.a = t.a);
У вас уже есть хорошие ответы, я просто хотел добавить один. Вы также можете пойти с LEFT JOIN
:
SELECT temp.a
FROM temp
LEFT JOIN temp2
ON temp.a = temp2.a
WHERE temp2.a IS NULL;
использовать не так, как показано ниже
SELECT a FROM temp WHERE a NOT IN ( select a from temp2 where a is not null)