使用 FUNC 方法(选择器)到 return 我列表的 "light version"
using a FUNC method (selector) to return a "light version" of my list
我有一个可枚举的客户端列表,想要 return 我的客户端对象的轻量级 "version" :
IEnumerable<Client> clientList = blablabla. (data is fetched here)
return clientList.Select(b=> new CustomerSearchResult { Number= b.AccountNumber, Name = b.FirstName+" " +b.LastName , ...});
请注意,这是有效的,并且将生成一个基于 ClientList 的 customerSearchResult 对象
我想创建一个 FUNC(例如:CustomerSelector)来为每个客户对象创建一个 CustomerSearchResult(我的目标是避免像这样为我的每个客户列表手动设置属性):
例如:
Expression<Func<Customer,CustomerSearchResult>> selector = (input) =>
new CustomerSearchResult
{
Number= b.AccountNumber,
Name = b.FirstName+" " +b.LastName ,
...
};
...
... //CustomerList is previously populated
return CustomerList.Select(selector);
我收到以下错误:IEnumerable<Customer>
不包含 select
的定义
是否可以创建 FUNC select或者在这种情况下?
问题是您使用的是表达式树 - IQueryable<T>
(或者更确切地说,Queryable
中的扩展方法针对 IQueryable<T>
)。对于 Enumerable.Select
,您需要一个代理。只需将您的 selector
声明更改为:
Func<Customer, CustomerSearchResult> selector = input => { ... }
我有一个可枚举的客户端列表,想要 return 我的客户端对象的轻量级 "version" :
IEnumerable<Client> clientList = blablabla. (data is fetched here)
return clientList.Select(b=> new CustomerSearchResult { Number= b.AccountNumber, Name = b.FirstName+" " +b.LastName , ...});
请注意,这是有效的,并且将生成一个基于 ClientList 的 customerSearchResult 对象
我想创建一个 FUNC(例如:CustomerSelector)来为每个客户对象创建一个 CustomerSearchResult(我的目标是避免像这样为我的每个客户列表手动设置属性):
例如:
Expression<Func<Customer,CustomerSearchResult>> selector = (input) =>
new CustomerSearchResult
{
Number= b.AccountNumber,
Name = b.FirstName+" " +b.LastName ,
...
};
...
... //CustomerList is previously populated
return CustomerList.Select(selector);
我收到以下错误:IEnumerable<Customer>
不包含 select
是否可以创建 FUNC select或者在这种情况下?
问题是您使用的是表达式树 - IQueryable<T>
(或者更确切地说,Queryable
中的扩展方法针对 IQueryable<T>
)。对于 Enumerable.Select
,您需要一个代理。只需将您的 selector
声明更改为:
Func<Customer, CustomerSearchResult> selector = input => { ... }