我有一个类型字典:
Dictionary<Foo,List<Bar>>
我想将其转换为此类型:
Dictionary<Foo,List<DTOBar>>
我有一个名为'ToDTO'的方法,它接受一个类型Bar并返回'DTOBar'来进行转换
DTOBar ToDTO(Bar bar)
{
return new DTOBar(bar);
}
我可以使用一个for循环转换它,然后使用类似的方法组转换Select():
foreach (var kvp in GetDict())
{
var lst = kvp.Value.Select(DTOMapper.ToDTO).ToList();
ret.Add(kvp.Key,lst);
}
是否可以进一步减少这种情况并在单个linq查询中执行此操作?我看过ToDictionary,但我不确定如何从列表中删除它。如果可能的话,我想避免修改ToDTO()函数(让它仍然只需要一个记录而不是List ..)
答案 0 :(得分:3)
GetDict().ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value.ConvertAll(DTOMapper.ToDTO)
);
答案 1 :(得分:1)
var ret = GetDict.ToDictionary(
x => x.Key,
x => x.Value.Select(DTOMapper.ToDTO).ToList());