Синтаксис Linq в VB.NET - PullRequest
1 голос
/ 28 мая 2009

Что я действительно хочу, так это выбрать эти две таблицы в виде анона, как в блоге Скотта Гу: здесь Однако я бы согласился на этот созданный тип "ActiveLots". Я объединяю две таблицы хочу иметь возможность ссылаться на столбцы из каждого в моем наборе результатов.

Кажется, я неправильно понимаю синтаксис.

 Dim pi = From p In dc.Inventories Join i In dc.InventoryItems On p.InventoryItemID _
                     Equals i.InventoryItemID Where p.LotNumber <> "" _
                     Select New ActiveLots LotNumber = p.LotNumber, Quantity = p.Quantity, Item = i.Item, Uom = i.UnitofMeasure, Description = i.Description

1 Ответ

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

Взгляните на запись в блоге Дэниела Мота . Я подозреваю, что вы хотите:

Dim pi = From p In dc.Inventories _
         Join i In dc.InventoryItems
              On p.InventoryItemID Equals i.InventoryItemID _
         Where p.LotNumber <> "" _
         Select New With { .LotNumber = p.LotNumber, .Quantity = p.Quantity, _
                           .Item = i.Item, .Uom = i.UnitofMeasure, _
                           .Description = i.Description }

Это использует анонимный тип - чтобы использовать конкретный тип, вы должны использовать New ActiveLots With { ... (где ActiveLots должен иметь конструктор без параметров).

...