using a FUNC method (selector) to return a "light version" of my list

I have an enumerable list of client and want to return a light weight "version" of my client object :

IEnumerable<Client> clientList = blablabla. (data is fetched here)

return clientList.Select(b=> new CustomerSearchResult { Number= b.AccountNumber, Name = b.FirstName+" " +b.LastName , ...});

Note that this is working and will a customerSearchResult object based on the ClientList

I want to create a FUNC (ex: CustomerSelector) to create a CustomerSearchResult with each client object (my goal is to avoid setting properties manually like this for each of my client lists) :

ex:

Expression<Func<Customer,CustomerSearchResult>> selector = (input) =>
new CustomerSearchResult
{
    Number= b.AccountNumber, 
    Name = b.FirstName+" " +b.LastName ,
    ...
};

...
... //CustomerList is previously populated
return CustomerList.Select(selector);

I'm getting the following error : IEnumerable<Customer> does not contain a definition for select

Is it possible to create a FUNC selector in this case ?

Jon Skeet
people
quotationmark

The problem is that you're using an expression tree - which is used by IQueryable<T> (or rather, the extension methods in Queryable targeting IQueryable<T>). For Enumerable.Select, you want a delegate instead. Just change your selector declaration to:

Func<Customer, CustomerSearchResult> selector = input => { ... }

people

See more on this question at Stackoverflow