LINQで2つのフィールドを連結して、キーワードでフィルタリングできるようにしようとしています。ここに投稿された質問が私の答えだと思いましたが、何らかの理由で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
Returnでこのエラーも発生します:
タイプ'DbQuery(Of VB $ AnonymousType_3(Of String、Integer))'のパブリックメンバー'ToArray'が見つかりません。
2つのフィールドを連結しようとする前に、私はそれらを別々に検索していましたが、うまくいきました。しかし、それらを連結すると、私が試みるすべてのことでエラーが発生するか、レコードがゼロになるようです。
動作する別の関数は次のとおりです。
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