如何根据另一个列表的值获取1个列表的值

时间:2015-08-20 17:22:13

标签: c# list combobox

我正在努力完成以下任务,并感谢任何帮助。

我有一个包含2列的CSV文件,1个名称列表和另一个相关ID列表。

EG。
Test1,00001
Test2,00002

我已将这些内容读入我的程序中的2个列表。 1. nameList 2. idList

我已使用nameList的值填充了组合框的数据源。

现在,当在组合框中选择一个名称并按下一个按钮时,我想获得该ID。因此,如果选择了Test1,当按下按钮时,将返回00001,就好像选择了Test2并按下按钮一样,返回00002。

如果它有帮助,这就是我目前用来填充列表的内容。

    public void nameCSV()
    {
        var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));
         List<string> nameList = new List<string>();
         List<string> idList = new List<string>();
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            var values = line.Split(',');

            nameList.Add(values[0]);
            idList.Add(values[1]);
        }
        cmbxName.DataSource = releaseNameList;
    }

2 个答案:

答案 0 :(得分:0)

public void nameCSV()
{
    var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));

    DataTable tbl = new DataTable();
    tbl.Columns.Add("Name", typeof(string));
    tbl.Columns.Add("ID", typeof(string));

    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');

        DataRow row = tbl.NewRow();
        row["Name"]=values[0];
        row["ID"] = values[1];
        tbl.Rows.Add(row);
    }

    cmbxName.DisplayMember = "Name";
    cmbxName.ValueMember = "ID";

    cmbxName.DataSource = tbl;


}

你需要这样的东西。检查ComboBox的属性DisplayMember和ValueMember。

因此,当单击该按钮并且您想要取值而不是显示文本时。

 protected void Button1_Click(object sender, EventArgs e)
 {
       string id = cmbxName.SelectedValue;
 }

N.B:你的头衔有误导性!

答案 1 :(得分:0)

使用Dictionary

public void nameCSV()
{
    var reader = new StreamReader(File.OpenRead(@"C:\temp\nameList.csv"));
    Dictionary<string, int> userDict = new Dictionary<string, int>();
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(',');

        userDict.Add(values[0], values[1]);
    }
    cmbxName.DataSource = userDict;
}

调用给定用户id的值只需使用密钥即可。例如,&#39; Test1&#39;

string Username = "Test1";
int userid;
userid = userDict[Username];

需要注意的是,字典可以更好地将数值作为键,而不是字符串。在你的情况下,你要查找字符串名称,所以它应该是这样的。只要字符串长度很短 - 也就是说不超过10个字符。表现明智,你应该没事。