tags:

views:

53

answers:

3

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 :(

A: 

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
+3  A: 

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
+1  A: 

This one seemed to work for me:

IQueryable<string> trimmed = untrimmed.AsQueryable<string>().Select(m => m.Trim());
Robaticus