将 Dictionary<int、ParentObject> 转换为 Dictionary<int、ChildObject> LINQ



我有一个父类(我们称之为ParentClass),它只包含一些属性(在本例中为longstring),还有一个从它继承的类(我们将其称为ChildClass),它不添加任何新属性,但只更改一些方法实现。

在一种方法中,我有一个Dictionary<int, ParentClass>,我想将其转换为Dictionary<int, ChildClass>。理想情况下,我想使用LINQ来实现这一点,但以下是我当前使用foreach循环的实现:

bar = new Dictionary<int, ChildClass>();
foreach(var foo in parentDictionary) { //parentDictionary is Dictionary<int, ParentClass>
    bar.Add(foo.Key, new ChildClass() { Id = foo.Value.Id, Name = foo.Value.Name});
}

有没有一种简单的方法可以用LINQ实现这种转换,使其成为一行代码?

IDictionary<TKey, TValue>继承自IEnumerable<KeyValuePair<TKey, TValue>>,因此我们可以使用任何LINQ方法:

parentDictionary.ToDictionary(
    kv => kv.Key,
    kv => new ChildClass { Id = kv.Value.Id, Name = kv.Value.Name });

它本质上是在做同样的事情,但您可以使用这样的LINQ ToDictionary方法:

bar = parentDictionary.ToDictionary(x => x.Key, new ChildClass() { Id = x.Value.Id, Name = x.Value.Name});

相关内容

  • 没有找到相关文章

最新更新