2016-07-19 7 views
0

私は親クラス(ParentClass)を継承するクラスと共に、いくつかのプロパティ(この場合はlongstring)しか保持しません新しいプロパティを追加するのではなく、メソッド実装の一部を変更するだけです(ChildClassとしましょう)。Dictionary <int、ParentObject>をDictionary <int、ChildObject>に変換するLINQ

に変換する方法は、Dictionary<int, ParentClass>です。理想的には私は、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でこの変換を実装するための簡単な方法はありますか?

答えて

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

ああ、私はあなたが 'Dictionary'に' ToDictionaryを() '呼び出すことができます実現しませんでした。 –

+1

@ChrisH。 'IDictionary 'はIEnumerable >から継承します。つまり、LINQメソッドを使用できます。 –

1

それは、本質的に同じことをやっているが、あなたはこのようLINQs ToDictionaryメソッドを使用することができます。

bar = parentDictionary.ToDictionary(x => x.Key, new ChildClass() { Id = x.Value.Id, Name = x.Value.Name}); 
関連する問題