将IEnumerable <x>转换为List <y> </y> </x>

时间:2010-11-05 10:39:33

标签: c# linq generics

我有(在Linq中)IEnumerable类型的Client。 现在我必须返回ClientVM类型的通用列表。 ClientVM是Client的子集(不是子类型或任何东西),我无法使其工作。

以下是我到目前为止的代码,但它不能以这种方式工作。 但也许这段代码可以为我的帖子添加一个内容来指定我想要做的事情:

clientVMs = clients.ToList().ConvertAll(new ClientVM( z => z.Reference, z=>z.Fullname ));

clientVMs是一个通用的List<ClientVM>,类ClientWM有一个构造函数,它接受两个属性,客户端是IEnumerable<Client>

而且,offtopic,当你处理泛型时编译器消息对人类来说是不可读的,imho。

4 个答案:

答案 0 :(得分:7)

也许是这样的?

var clientVMs = clients.Select(c => new ClientVM(c.Reference, c.Fullname))
                       .ToList();

答案 1 :(得分:2)

ConvertAll中的委托的语法错误:

clientVMs = clients.ToList().ConvertAll(z => new ClientVM( z.Reference, z.Fullname ));

答案 2 :(得分:1)

clients.ToList().Select(new ClientVM{ z => z.Reference, z=>z.Fullname }).ToList();

答案 3 :(得分:1)

你的lambda表达式放错了地方。你可能想要:

var clientVMs = clients.ToList().ConvertAll(
    client => new ClientVM(client.Reference, client.Fullname));