Я создал раскрывающийся список с именами столбцов в таблице в моем db. Когда пользователь выбирает имя столбца, я хочу добавить предложение where к запросу, чтобы использовать этот фильтр.Где предложение о динамическом имени столбца в запросе LINQ?
Что я пытаюсь сделать, это:
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 для ввода типа Boolean является недопустимым.
Надеюсь кто-то может дать вам лучший пример, но вы, вероятно, хотите [Как использовать деревья выражений для создания динамических запросов] (http://msdn.microsoft.com/en-us/library/bb882637.aspx) – Rup