Как конвертировать юникод в запросе linq?

1

В моем 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;
}
  • 5
    t.InvoiceDetail.Any(p=>p.ItemName) не является допустимым SQL. С какой базой данных вы работаете?
  • 2
    Вы не можете использовать LINQ внутри предложения SQL where. То же самое относится и к it.UserID==@UserID - это C #, а не SQL. Я думаю, что вы путаете LINQ и SQL ... Почему вы все равно используете пользовательский SQL? Похоже, нет никаких причин для этого.
Показать ещё 3 комментария
Теги:
linq

1 ответ

0

Попробуй это:--

Я не знаю структуру класса/таблицы/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 + '%'))";
  • 3
    Вы должны объяснить, что вы сделали здесь. На первый взгляд код выглядит как копия и вставка из вопроса ОП. Вы могли бы просто скопировать переменную WhereClause вместо всего кода.
  • 0
    выдает ошибку «InvoiceDetail» не является членом типа «OnlineInvoiceModel.InvoiceDetail» в загруженных в настоящий момент схемах. Рядом с простым идентификатором, строка 6, столбец 117. »
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню