使用lambdas将Dictionary <int,object =“”>转换为Dictionary <int,object.property =“”>

时间:2015-10-26 21:56:26

标签: c#

假设我有一个类Building,其属性为int Id,int Height,int NumberOfFloors。

如果我有一个词典,其中每个键都是建筑物ID。有没有办法将其转换为字典,其中每个键是建筑物ID,每个值是楼层数。显然这对循环来说是可行的。只是想知道是否有一种使用lambdas的简单方法吗?

谢谢!

var intToBuilding = new Dictionary<int, Building>(); //pretend populated
var intToInt = new Dictionary<int, int>();
foreach(var intBuilding in intToBuilding)
{
  var building = userPreference.Value;
  intToInt.Add(intBuilding.Key, building.Height);
} 

1 个答案:

答案 0 :(得分:4)

应该是这样的:

var floorDictionary = buildingDictionary
   .ToDictionary(kv => kv.Key, kv => kv.Value.NumberofFloors);

源词典实现了IEnumerable< KeyValuePair<TKey, TValue> >,为此有一个扩展方法ToDictionary(keySelector, valueSelector)