23

Is this possible, or am I just trying to way overly shorten my code?

I thought it might be something like:

IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().All(s => s.Trim());

But that's no good :(

Matt W
  • 11,753
  • 25
  • 118
  • 215

3 Answers3

69

I think you want just:

IEnumerable<string> trimmed = untrimmedStrsArr.Select(s => s.Trim());

If you have in-memory collection such as list or array, then you can work with them using LINQ methods for IEnumerable<T>, because these process data in memory. Queryable is useful when working with databases (e.g. using LINQ to SQL).

You can find a good documentation on various methods on MSDN. The following should explain why you need Select instead of All:

  • All - Determines whether all elements of a sequence satisfy a condition.
  • Select - Projects each element of a sequence into a new form.
Tomas Petricek
  • 240,744
  • 19
  • 378
  • 553
3

This one seemed to work for me:

IQueryable<string> trimmed = untrimmed.AsQueryable<string>().Select(m => m.Trim());
Robaticus
  • 22,857
  • 5
  • 54
  • 63
2

All is not the right method to do this. It is a predicate, returning true if every item in the collection matches the condition you give in the parameter. Use

IQueryable<string> trimmedStrs = untrimmedStrsArr.AsQueryable<string>().Select(s => s.Trim()); 
Jens
  • 25,229
  • 9
  • 75
  • 117