В моем db есть две таблицы: InvoiceDetail
и ProductDetail
. Я хочу написать условие поиска, в котором, если я ищу продукт или клиент, он отобразит соответствующий счет-фактуру. Вот мой код для searchClickevent
.
Он дает ошибку The query syntax is not valid. Near term '>', line 6, column 136.
The query syntax is not valid. Near term '>', line 6, column 136.
protected void SearchInvoiceButton_Click(object sender, EventArgs e)
{
String WhereClause = "it.UserID==@UserID AND it.IsDeleted == false AND (it.ClientDetail.ClientName LIKE '%' + @SearchTerm + '%') OR (it.InvoiceDetail.Any(p=>p.ItemName))";
EntityDataSourceInvoice.Where = WhereClause;
ViewState["InvoiceViewWhereClause"] = WhereClause;
if (EntityDataSourceInvoice.WhereParameters["SearchTerm"] != null)
{
EntityDataSourceInvoice.WhereParameters["SearchTerm"].DefaultValue = SafeSearchLiteral(SearchTextBox.Text.Trim());
}
else
{
Parameter CategoryParameter = new Parameter("SearchTerm", System.Data.DbType.String, SafeSearchLiteral(SearchTextBox.Text.Trim()));
CategoryParameter.ConvertEmptyStringToNull = false;
EntityDataSourceInvoice.WhereParameters.Add(CategoryParameter);
}
InvoiceGrid.DataBind();
InvoiceGrid.AllowPaging = false;
InvoiceGrid.AllowPaging = true;
}
Попробуй это:--
Я не знаю структуру класса/таблицы/EntityDatasource, но я предполагаю, что это должно работать, Change is only whereclause: -
String WhereClause = "it.UserID==@UserID AND it.IsDeleted == false
AND ((it.ClientDetail.ClientName LIKE '%' + @SearchTerm + '%')
OR (it.ItemName LIKE '%'+ @SearchTerm + '%'))";
t.InvoiceDetail.Any(p=>p.ItemName)
не является допустимым SQL. С какой базой данных вы работаете?it.UserID==@UserID
- это C #, а не SQL. Я думаю, что вы путаете LINQ и SQL ... Почему вы все равно используете пользовательский SQL? Похоже, нет никаких причин для этого.