简体   繁体   中英

How to get values in two indexes of a string list and assign them to two string variables C#

I'm implementing a method to return the result set that generated from the query and assign it to a string list. I have set to assign the id (id is a primary key) and name of selected db table line to index 0 and 1 in the string list. The code of that as follows,

    public List<string>[] getTrafficLevel()
    {
        string query = "select * from traffictimeinfo where startTime<time(now()) and endTime>time(now());";
        List<string>[] list = new List<string>[2];
        list[0] = new List<string>();
        list[1] = new List<string>();

        if (this.openConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            MySqlDataReader dataReader = cmd.ExecuteReader();

            while (dataReader.Read())
            {
                list[0].Add(dataReader["timeslotid"] + "");
                list[1].Add(dataReader["timeslotname"] + "");
            }
            dataReader.Close();
            this.closeConnection();
            return list;
        }
        else
        {
            return list;
        }
    }

What I want to know is how can i assign this values in two indexes into two string variables.

the method that i tried is as follows, is there anyone who knows how to implement this.. Thanks in advance..

    public void predictLevel(List<String>resList)
    {
        string trafficTime, trafficLevel;
        List<string>[]ansList = getTrafficLevel();
        ansList[0] = # want to assign the string value into trafficTime string variable
        ansList[1].ToString = # want to assign the string value into trafficLevel string variable
    }

Have you considered using List of Tuples instead?

public List<Tuple<string,string>> getTrafficLevel()
{
    string query = "select * from traffictimeinfo where startTime<time(now()) and endTime>time(now());";
    List<Tuple<string,string>> list = new List<Tuple<string,string>>();

    if (this.openConnection() == true)
    {
        MySqlCommand cmd = new MySqlCommand(query, connection);
        MySqlDataReader dataReader = cmd.ExecuteReader();

        while (dataReader.Read())
        {
            list.Add(new Tuple<string,string>(dataReader["timeslotid"] + "", dataReader["timeslotname"] + ""));
        }
        dataReader.Close();
        this.closeConnection();
        return list;
    }
    else
    {
        return list;
    }
}

And your predictLevel method would be -

public void predictLevel(List<String>resList)
{
    string trafficTime, trafficLevel;
    List<Tuple<string,string>> ansList = getTrafficLevel();
    trafficTime = ansList[0].Item1;
    trafficLevel = ansList[0].Item2;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM