c#中mysql_fetch_assoc的等效命令是什么?

I was very used to php's mysql_fetch_assoc command to acquire a single row prior to OOP making previous querying deprecated. I am now working on a C# project and am trying to learn the law of the land when it comes to querying. I can accomplish a basic query like the following and get a result...but I want to know if there is an easier method? Notice that this occurs when a button is clicked.

private void button1_Click(object sender, EventArgs e)
    {
        string user;
        string userName = Environment.UserName;
        MySqlConnection conn = Connect.Initialize();
        conn.Open();

        string stm = "SELECT user_id from users where login = '" + userName + "'";
        MySqlCommand cmd = new MySqlCommand(stm, conn);
        try
        {

            MySqlDataReader sqlReader = cmd.ExecuteReader();
            while (sqlReader.Read())
            {
                user = sqlReader.GetString(0);
                System.Windows.Forms.MessageBox.Show(user);
            }
        }
        catch { }
    }
}

As the term "array" in PHP and an array in C-style languages are something different,
ie. a key-value-collection with strings as keys isn´t an array,
there is no fetch_assoc.
(At least i am pretty sure none of the bultin methods of MySqlDataReader
and no similar builtin class can generate maps).

If your code works, why don´t use it?
Put it in a method which returns a Dictionary collection
or something similar, if you like this more.

edit: Don´t write empty catch´es.
DB connections are something which will go wrong more than one time in million years.

edit2: Close the connction etc. again if you don´t need it anymore.