正在加载特定类型的字典值
本文关键字:字典 类型 加载 | 更新日期: 2023-09-27 18:28:16
如何在读取不同的数据表调用时加载具有特定类型成员的字典?
- 我正在使用方法HashSet.ToDictionary填充Dictionary
- 然后我调用DB并希望加载对象(属性Value1)
- 最后,我将调用另一个DB,查找并预填充现有对象的Value2属性
HashSet < string > hashset = new HashSet < string > ();
Dictionary < string, CustomeObject > dictionary = new Dictionary < string, CustomeObject > ();
dictionary = hashset.ToDictionary(h => h, h => (CustomeObject) null);
while (firstreader.Read()) {
if (dictionary.ContainsKey(firstreader.GetValue(1).ToString())) {
dictionary[firstreader.GetValue(1).ToString()] = new CustomeObject() {
Key = firstreader.GetValue(1).ToString(),
Value1 = firstreader.GetValue(2).ToString(),
Value2 = null
};
}
}
while (secondreader.Read()) {
if (dictionary.ContainsKey(secondreader.GetValue(1).ToString())) {
dictionary[secondreader.GetValue(1).ToString()] = new CustomeObject() {
Key = "", //Persist the value from previous load
Value1 = secondreader.GetValue(2).ToString(),
Value2 = null;
};
}
}
当您在遍历两个读取器的同时写入字典时,您正在实例化两个读取器中的一个新对象,并将其分配给字典值。因此,您在读取firstreader
时创建对象,然后在读取secondreader
时覆盖对象。
阅读secondreader
时需要做的是检查dictionary值是否为null。如果不是,那么只写Value2。
while (secondreader.Read()) {
var myReadValue = secondreader.GetValue(1).ToString();
if (dictionary.ContainsKey(myReadValue)) {
if(dictionary[myReadValue] != null) {
dictionary[myReadValue].Value2 = secondreader.GetValue(2).ToString();
}
}
}