2010-10-19 5 views
0

До сих пор, когда я выполнял операцию присоединения в LINQ, я понятия не имею, как решить, какой список должен быть первым и какой список должен последовать. Предположим, у меня есть два списка: List<Product> и List<Order>.Список <Product> .Join (Список <Order>, ...) идентичен списку <Order> .Join (Список <Product>, ...)?

Edit:

Моя путаница решить

List<Product>.Join(List<Order>, ...) 

или

List<Order>.Join(List<Product>, ...) 

?

+0

Если ваш запрос верен, вам не нужно «решать», это то, что делают базовые выражения Linq. Можете ли вы показать нам пример, где вы не можете «решить»? – RPM1984

+0

Список .Join (Список , ...) или Список .Join (Список , ...) <=== это мое замешательство. – xport

ответ

1

Enumerable.Join выполняет внутренний, equijoin. Из MSDN:

означает «внутренний», что только те элементы, которые имеют матч в другой последовательности включены в результаты. «Equijoin» - это соединение, в котором ключи сравниваются для равенства.

Следовательно, выбор которых последовательности считаться «внешняя» никто не оказывает никакого влияния на те элементы, которые будут настоящего в результате запроса. Все (outer, inner) пары, для которых их соответствующие выступы будут равны внести свой путь в.

Тем не менее, будет воздействие с точки зрения последовательности элементов в результате. Из MSDN:

Регистрация сохраняет порядок элементов внешнего, так и для каждого из этих элементов , порядком согласующих элементов внутренней.

Еще один тривиальный момент заключается в том,

Смежные вопросы