Как использовать метод ToString () для преобразования целого числа в строку внутри LINQ - PullRequest
3 голосов
/ 25 ноября 2010

Когда я пытаюсь использовать ToString () внутри приведенного ниже лямбда-выражения LINQ, я получаю исключение, в котором говорится, что «LINQ to Entities не распознает метод метода System.String ToString ()», и этот метод нельзя преобразовать в сохранить выражение. "

query = query.Where(q => q.date.ToString().Contains(filtertext)
                          || q.invoicenum.ToString().Contains(filtertext)
                          || q.trans_type.ToString().Contains(filtertext)
                          || q.charge.Contains(filtertext));

Я использую Linq для призыва. И база данных используется MySQL, а не SQL Server. Немедленная помощь будет высоко ценится.

Ответы [ 3 ]

5 голосов
/ 27 ноября 2010

Я решил эту проблему, напрямую написав MySQl-запрос внутри C #, как показано ниже -

string queryTemplate = 
 @"select inv.* from invoices as inv where userID = '123' and date like '%abc%'";
List<invoice> totalSearch = 
 context.ExecuteStoreQuery<invoice>(queryTemplate).ToList();
4 голосов
/ 24 апреля 2011

Harshal, проблема в том, что SqlFunctions.StringConvert предназначен для MS SQL, а не для MySQL. Вы можете попытаться преобразовать результаты в Enumerable, а затем запросить его. Пример:

using (DatabaseEntities db = new DatabaseEntities())
        {
            var list = from l in db.Customers.AsEnumerable()
                       orderby l.CompanyName
                       select new SelectListItem { Value = l.CustomerID.ToString(), Text = l.CompanyName };

            return list.ToList();
        }

Обратите внимание на строку:

л в дБ. Клиенты. AsEnumerable ()

конвертирует результаты в Enumerable, тогда вы можете использовать .toString () для него. Вы можете адаптировать это к вашим потребностям.

1 голос
/ 25 ноября 2010

В EF 4 вы можете использовать SqlFunctions.StringConvert

...