LİNQ SQL 使用加入创建新列表 VB.NET

LİNQ SQL Creating a New List Using Join VB.NET

我想从 ITEM_DEF 得到 item_orderitem_id ITEM_SYT p4 列。 item_ids 也是一样的。然后按升序对列表进行排序。 因此,新列表将包括 3 列,如 item_iditem_orderp4.

编辑:我只需要看看我应该如何声明列表。

这里有一个效果很好的例子:

Dim ItemSytList As List(Of VLibrary.LINQ.ITEM_SYT) = New List(Of VLibrary.LINQ.ITEM_SYT)

ItemSytList = (From itemSyt As VLibrary.LINQ.ITEM_SYT In Context.ITEM_SYTs _
    Join itemDef As VLibrary.LINQ.ITEM_DEF In Context.ITEM_DEFs On itemSyt.item_id Equals itemDef.item_id _
    Where itemSyt.p1.ToUpper = "BDDK".ToUpper And itemSyt.p2.ToUpper = TableName.ToUpper _
    And itemDef.template_id = TemplateId And If(itemDef.item_close_date.HasValue, itemDef.item_close_date, StartDate) >= StartDate _
    And If(itemDef.item_open_date.HasValue, itemDef.item_open_date, EndDate) <= EndDate Select itemSyt).ToList

此代码用于将 ITEM_SYT 的列保留为子列。

您需要做的是使用匿名类型。 (尽可能对 LINQ 使用隐式类型)

Dim ItemSytList =
    From itemSyt As VLibrary.LINQ.ITEM_SYT In context.ITEM_SYTs
    Join itemDef As VLibrary.LINQ.ITEM_DEF In context.ITEM_DEFs On itemSyt.item_id Equals itemDef.item_id
    Where itemSyt.p1.ToUpper = "BDDK".ToUpper And itemSyt.p2.ToUpper = TableName.ToUpper _
        And itemDef.template_id = TemplateId And If(itemDef.item_close_date.HasValue, itemDef.item_close_date, StartDate) >= StartDate _
        And If(itemDef.item_open_date.HasValue, itemDef.item_open_date, EndDate) <= EndDate
    Select New With {
        .item_order = itemDef.item_order,
        .item_id = itemDef.item_id,
        .p4 = itemSyt.p4}

您可以像这样访问结果

Dim firstP4 = ItemSytList.OrderBy(Function(i) i.item_order).First().p4