C# 以列表为基的C字典
我正在尝试创建一个自定义词典,该词典使用列表作为基础,将用于XML反序列化。我不知道如何创建它,因为键似乎不能放在字符串上 字典将TestObject的key属性作为键,并将TestObject本身作为值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; } }
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是的,我忘了超负荷。固定的谢谢你的帮助!