Действительно ли это возможно, или я просто пробую к пути, чрезмерно сокращают мой код?
Я думал, что это могло бы быть что-то как:
IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().All(s => s.Trim());
Но это бесполезно :(
Я думаю, вам нужно просто:
IEnumerable<string> trimmed = untrimmedStrsArr.Select(s => s.Trim());
Если у вас есть коллекции в памяти, такие как список или массив, то вы можете работать с ними, используя методы LINQ для IEnumerable
, потому что они обрабатывают данные в памяти. Queryable полезен при работе с базами данных (например, при использовании LINQ to SQL).
Вы можете найти хорошую документацию по различным методам на MSDN. Следующее должно объяснить, почему вам нужен Select
вместо All
:
All
- определяет, все ли элементы последовательности удовлетворяют условию. Select
- Проецирует каждый элемент последовательности в новую форму. All
не является подходящим методом для этого. Это предикат, возвращающий true, если каждый элемент в коллекции соответствует условию, заданному в параметре. Используйте
IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().Select(s => s.Trim());
Этот, кажется, работал для меня:
IQueryable<string> trimmed = untrimmed.AsQueryable<string>().Select(m => m.Trim());