Linq to Entities: предложение, содержащее ToString, не выполняется - PullRequest
1 голос
/ 27 сентября 2011

Я могу сделать следующее:

 var result = DB.Products.ToList()  // .AsEnumerable() too
              .Where( p => p.ID.ToString() == ViewModel.ID);

Но он вытягивает все продукты вместо того, что я хочу, а затем фильтрует локально. Без ToList () он не может найти / использовать метод .ToString в проекции. ViewModel.ID - это строка из клиента.

Этот вопрос здесь говорит об одной и той же проблеме, за исключением предложения where, но ответ не фиксирует вытягивание каждого продукта локально.

My ViewModel.ID является строкой, потому что knockout.js преобразует ее из числовой в строку, если пользователь изменяет значение. Я подумал, что сначала займусь этим, потому что, вероятно, это проще исключить.

1 Ответ

7 голосов
/ 27 сентября 2011

Я думаю, что вы подходите к проблеме с неправильной стороны.Преобразуйте ViewModel.ID обратно в целое число (int.Parse), после чего вы можете разгрузить фильтрацию обратно в базу данных.Это будет намного лучше, чем обходной путь для приведения p.ID к строке в базе данных, что, скорее всего, приведет к потере любой индексации значения в БД.

...