如何将字典保存到数据库中?或者我应该使用不同的方法来获得我想要的输出?
我有两个类别。 类别 - A和 类别 - B
类别 - A 的步骤:
类别 - B 的步骤:
选择ComboBox1 的 IndexChangedEvent
当我选择Category - A时,我只看到comboBox2中的A类序列而没有别的。
当我选择Category - B时,我只在comboBox2中看到B类序列而没有别的。
下一步:(所需结果)
代码
if (comboBox1.SelectedIndex == 0)
{
comboBox2.Items.Clear();
foreach (var item in vals)
{
if (item.Key == 0) //If Key value is 0, if it is CategoryA
{
comboBox2.Items.Add(item.Value);
// MessageBox.Show("Adding: " + (item.Value.ToString()));
comboBox2.Refresh();
}
}
}
if (comboBox1.SelectedIndex == 1)
{
comboBox2.Items.Clear();
foreach (var item in vals)
{
if (item.Key == 1) //If Key value is 1, if it is CategoryB
{
comboBox2.Items.Add(item.Value);
comboBox2.Refresh();
}
}
}
ComboBox1代码索引事件已更改
matches
答案 0 :(得分:2)
保存到数据库需要一些工作,另一个选项(如果结构不会发生太大变化)是将对象序列化为json(Using Newtonsoft's JSON.Net)并持久保存到磁盘。如果您有一个可用的序列化文本,并且需要安全性和/或访问权限以及来自不同计算机的状态,您也可以将序列化文本写入数据库。
您还可以保存应用程序关闭时所选值的状态,以便您可以为用户提供下次打开应用程序时所处的确切视图。
这是在.Net 4.0中测试的工作控制台应用程序(但在VS2015中编写)。
namespace ConsoleApplication1
{
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
// Populate the dictionary
Dictionary<int, string> myDictionary = new Dictionary<int, string>();
myDictionary.Add(1, "one");
myDictionary.Add(2, "two");
myDictionary.Add(3, "three");
// Serialise it to disk
string jsonToWrite = JsonConvert.SerializeObject(myDictionary);
using (StreamWriter sw = File.CreateText("c:\\temp\\YourDictionary.txt"))
{
sw.Write(jsonToWrite);
}
// Deserialise it from Disk back to a Dictionary
string jsonToRead = File.ReadAllText("c:\\temp\\YourDictionary.txt");
Dictionary<int, string> myDictionaryReconstructed =
JsonConvert.DeserializeObject<Dictionary<int, string>>(jsonToRead);
// Check values exist in the two dictionaries
if (myDictionary.All(x => myDictionaryReconstructed.Any(y => x.Value == y.Value)))
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine("Failed");
}
}
}
}