Какой метод LINQ to SQL Left-Join в VB.NET лучше всего использовать? - PullRequest
2 голосов
/ 29 июля 2011

Является ли один из этих вариантов левого соединения VB.NET LINQ to SQL лучше других?

Я не уверен, что использовать.

Метод 1: Лямбда

Dim query = From A In DB.Product_Categories
            From B In DB.MasItems.Where(Function(x) CBool(x.itemkey = A.ItemKey)).DefaultIfEmpty
            Select A.Name

Способ 2: объединение в группу

Dim query = From A In DB.Product_Categories
            Group Join B In DB.MasItems On B.itemkey Equals A.ItemKey Into X = Group
            From Y In X.DefaultIfEmpty
            Select A.Name()

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Сгенерированный SQL одинаков для обоих запросов, поэтому в LINQ to SQL это действительно личное предпочтение.

2 голосов
/ 29 июля 2011

РЕДАКТИРОВАТЬ : Это верно для LINQ to Objects.
Я не знаю о LINQ to SQL.

Метод 2 быстрее, так как GroupJoin создает хеш-таблицувнутренне.

Метод 1 - O(n<sup>2</sup>), так как он должен искать все MasItems для каждой категории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...