Если вы используете IEnumerable
вместо этого, он будет работать (по крайней мере, в C # 4.0, я не пробовал предыдущие версии). Это просто бросок, конечно же, он все равно будет списком.
Вместо -
List<A> listOfA = new List<C>(); // compiler Error
В исходном коде вопроса , use -
IEnumerable<A> listOfA = new List<C>(); // compiler error - no more! :)
Для распределенного SQL прямое не-качественное соединение (t1.id > t2.id
) довольно дорого выполняется. Если одна сторона мала, вы выполняете широковещательную рассылку, а затем используете отсортированный индекс на каждом узле. Если обе стороны большие, вы можете выбрать один раздел и построить отсортированный индекс, а затем реплицировать другие строки в любой диапазон, который может совпадать.
Обычно у вас есть комбинационное равенство и неравное соединение, например t1.id = t2.id and t1.cost < t2.cost
. В этом случае вы можете сделать обычное распределенное хеш-соединение, а затем сохранить отсортированный список вторичных элементов для выполнения неравной части. Это то, что делает Престо.