将字典< int,ParentObject>转换为字典< int,ChildObject> LINQ

ldioqlga  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(78)

我有一个父类(我们称之为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实现这种转换,使其成为一行程序?

5jdjgkvh

5jdjgkvh1#

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

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

字符串

ux6nzvsh

ux6nzvsh2#

它本质上是做同样的事情,但你可以像这样使用LINQs ToDictionary方法:

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

字符串

相关问题