0

我正在尝试连接 LINQ 中的两个字段,以便我可以使用关键字进行过滤。我在这里发现了一个我认为是我的答案的问题,但由于某种原因我得到了 0 条记录。这应该为自动完成文本框返回 JSON 结果(当我不连接字段时它可以工作)。

这是我的代码:

Function CostCodeList(ByVal term As String) As ActionResult

        Dim results = From c In db.ORG_CHART_V
                      Let Fullname = CStr(c.COSTCTR_CD & " - " & c.BREADCRUMB)
                      Where Fullname.ToUpper.Contains(CStr(term).ToUpper)
                      Order By Fullname
                      Select New With {.label = Fullname, .id = c.ORG_NODE_ID}

        Return Json(results.ToArray, JsonRequestBehavior.AllowGet)
  End Function

我在退货时也遇到了这个错误:

未找到类型“DbQuery(Of VB$AnonymousType_3(Of String,Integer))”上的公共成员“ToArray”。

在尝试连接这两个字段之前,我分别成功地搜索了它们。但是当我将它们连接起来时,似乎我尝试的每件事都会给我一个错误和/或零记录。

这是一个确实有效的不同功能:

Function RoleList(ByVal term As String) As ActionResult
        Dim list As New ArrayList
        Dim results As IQueryable(Of JOB_ROLE)

        If IsNumeric(term) Then
            results = From c In db.JOB_ROLE
                      Where CStr(c.JBROLE_NO).StartsWith(term)
        Else
            results = From c In db.JOB_ROLE
                      Where c.JOB_ROLE_NAME.ToUpper.Contains(CStr(term).ToUpper)
        End If

        results = results.OrderBy(Function(e) e.JOB_ROLE_NAME)

        For Each item In results
            list.Add(New With {.label = item.JOB_ROLE_NAME, .id = item.JOB_ROLE_ID})
        Next

        Return Json(list.ToArray, JsonRequestBehavior.AllowGet)
    End Function
4

1 回答 1

0

这是按预期工作的新功能:

    Function CostCodeList(ByVal term As String) As ActionResult
        Dim list As New ArrayList

        Dim results = db.ORG_CHART_V.Where(Function(e) (CStr(e.COSTCTR_CD) + " - " + e.BREADCRUMB).Contains(CStr(term).ToUpper)).OrderBy(Function(o) o.COSTCTR_CD)

        For Each item In results
            list.Add(New With {.label = item.COSTCTR_CD & " - " & item.BREADCRUMB, .id = item.ORG_NODE_ID})
        Next

        Return Json(list.ToArray, JsonRequestBehavior.AllowGet)
    End Function
于 2012-06-04T12:49:03.083 回答