2

データベースのテーブルにいくつかの列名を含むドロップダウンを作成しました。ユーザーが列名を選択したら、このフィルターを使用するためにクエリにwhere句を追加します。

私がやろうとしていることは:

Dim objQuery = (From wc In _dbBellen.dealer_telefonies Order By wc.Bedrijfsnaam Select wc)

'if dropdown has value...

objQuery = objQuery.Where(Function(wc) wc.DynamicColumnName < txtFilterValue1.Text)

wc.DynamicColumnNameは、たとえばwc.Priceに置き換える必要があります。

-

いくつかの返信の後に私が今試したコードは次のとおりです。

    Dim objQuery = (From wc In _dbBellen.dealer_telefonies Order By wc.Bedrijfsnaam Select wc)

        If ddlFilterColumn1.SelectedValue <> "" And ddlFilterOperator1.SelectedValue <> "" And txtFilterValue1.Text <> "" Then

            Select Case ddlFilterOperator1.SelectedValue
                Case "..%"
                    objQuery = objQuery.Where(Function(wc) wc.WHMCSClient_id Like txtFilterValue1.Text & "%")
                Case "%.."
                    objQuery = objQuery.Where(Function(wc) wc.WHMCSClient_id Like "%" & txtFilterValue1.Text)
                Case Else '< > = <>
                    'objQuery = objQuery.Where(Function(wc) wc.WHMCSClient_id < txtFilterValue1.Text)
                    'objQuery = objQuery.Where(Function(wc) "wc." + ddlFilterColumn1.SelectedValue.ToString + " < " + txtFilterValue1.Text)
                    objQuery = objQuery.Where(Function(wc) "wc.WHMCSClient_id < 500")
            End Select

        End If

    Response.Write(objQuery.ToString())

しかし、次のエラーが発生します(元のエラーはオランダ語ですが、次のように表示されます):文字列wc.WHMCSClient_id<500からタイプブール値への変換は無効です。

4

1 に答える 1

2

これはかなり古い記事ですが、それでも実行可能だと思います

Scott Guは、しばらく前にDynamic LINQライブラリについて投稿しました。これにより、文字列を使用して「LINQ」タイプの形式でコレクションをクエリできます。つまり、次のようになります。

Dim objQuery = (From wc In _dbBellen.dealer_telefonies Order By wc.Bedrijfsnaam Select wc)

// if dropdown has value...
Dim result = objQuery.Where("MyColumnName < " + txtFilterValue1.Text);

記事全文へのリンクは次のとおりです。動的LINQ(パート1:LINQ動的クエリライブラリの使用)

于 2012-07-04T15:30:32.890 に答える