C# 以列表为基的C字典

C# 以列表为基的C字典,c#,C#,我正在尝试创建一个自定义词典,该词典使用列表作为基础,将用于XML反序列化。我不知道如何创建它,因为键似乎不能放在字符串上 字典将TestObject的key属性作为键,并将TestObject本身作为值 public class TestObject { public string Key { get; set; } public string Property1 { get; set; } public int Property2 { get; set; } }

我正在尝试创建一个自定义词典,该词典使用列表作为基础,将用于XML反序列化。我不知道如何创建它,因为键似乎不能放在字符串上

字典将TestObject的key属性作为键,并将TestObject本身作为值

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);
    }
}

根据您最后的评论,您想做的事情如下:

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

这使用了LINQ的ToDictionary方法,尽管一个简单的foreach循环就足够了。

这甚至不会编译,您没有理由为此创建自定义词典。只需使用字典通用字典也可以做到这一点,但xml序列化的结果是这些测试对象的列表,我希望有一个以该测试对象的属性作为键的字典。@Mirzoda为什么不反序列化到普通列表中,然后从中创建一个以任何键为键的字典?林克的《托迪卡迪亚》很方便。@Alejandro:谢谢!我会研究一下。list.ToDictionaryx=>x。键就足够了,我think@OfirWinegarten是的,我忘了超负荷。固定的谢谢你的帮助!