2017-12-19 4 views
-3

リストをベースとして使用するカスタム辞書を作成しようとしています(XMLの逆シリアル化で使用されます)。キーを文字列に置くことができないので、キーを作成する方法を理解できません。C#リストを基にした辞書

辞書はTestObjectのKeyプロパティをKeyとして持ち、ValueとしてTestObject自体を持つでしょう。簡単なforeachループは十分であろうが、これは、LINQのToDictionaryメソッドを使用しています

public class Methods 
{ 
    public void TestMethod(List<TestObject> list) 
    { 
     Dictionary<string, TestObject> data = list.ToDictionary(x => x.Key); 
    } 
} 

:あなたの最後のコメントを考えると

public class TestObject 
{ 
    public string Key { get; set; } 
    public string Property1 { get; set; } 
    public int Property2 { get; set; } 

} 

public class CustomDictionary<string, TestObject> : List<TestObject> 
{ 

} 

public class Methods 
{ 
    public void TestMethod(List<TestObject> list) 
    { 
     var testObject = new TestObject() 
     { 
      Key = "TEST", 
      Property1 = "ABC", 
      Property2 = 123, 
     }; 

     CustomDictionary<string, TestObject> dictionary = new CustomDictionary<string, TestObject>(list); 

     var test; 
     dictionary.TryGetValue(testObject.Key, out test); 
    } 
} 
+4

これはコンパイルされず、このためにカスタムの「辞書」を作成する必要はありません。 'Dictionary 'を使用してください –

+0

generic辞書でも可能です – Sunil

+0

xmlのシリアル化の結果はこれらのTestObjectのリストであり、そのTestObjectのプロパティをキーとして辞書を持っていたいと思います。 – Mirzoda

答えて

1

は、何がやりたいことは、このようなものです。

+0

list.ToDictionary(x => x.Key)で十分だと思います。 –

+0

@OfirWinegartenはい、私はそのオーバーロードを忘れていました。一定! –

+0

助けてくれてありがとう! – Mirzoda

関連する問題