2015-09-21 1 views
0

Следующий код для аналогичной инструкции выдает ошибку, может ли кто-нибудь помочь?Как методы для целочисленного поля в запросе LINQ

var results = from c in dt.AsEnumerable() 
       where SqlMethods.Like(c.Field<int>("Design_no").ToString(), 
            "%" + Auto_txt_desi.Text.Tostring() + "%,") 
       select c; 
       DataView view = results.AsDataView(); 
       dt = view.ToTable(); 
+3

Можете ли вы поместить свой запрос в слова для лучшего понимания. –

ответ

6

SqlMethods.Like является способом Linq-To-Sql для запроса базы данных не для Linq-To-DataSet, который является подмножеством Linq-To-Objects. Вы можете использовать чистые методы .NET вместо:

var rows = from row in dt.AsEnumerable() 
      let Design_no = row.Field<int>("Design_no").ToString() 
      where Design_no.Contains(Auto_txt_desi.Text) 
      select row; 

MSDN:

SQL-функциональность сервера LIKE не могут быть доступны через перевод существующих общеязыковой среды выполнения (CLR) и .NET Framework конструкции, и не поддерживается вне контекста LINQ to SQL . Использование этого метода вне LINQ to SQL всегда будет исключить тип.

+0

Я думаю, что design_no должен содержать текст, а не наоборот. Исправьте меня, если я ошибаюсь –

+0

Функциональность SQL LIKE не поддерживается вне контекста LINQ to SQL. https://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods.like%28v=vs.110%29.aspx –

Смежные вопросы