MySQL 查询在 Workbench 中有效,但在 C# 代码中无效

MySQL query works in Workbench but not in C# code

SQL查询:

SELECT som.id, som.name, som.search_enabled, oc.id, oc.name
FROM option_category oc
INNER JOIN skill_option so
    on oc.id=so.option_category_id
INNER JOIN skill_option_master som
    on som.id=so.id;

在 Workbench 中工作正常:

但是,在我的 C# 代码中:

List<string> listItems = getMultiColumnListFromDB(

                         "SELECT som.id, som.name, som.search_enabled, oc.id, oc.name " +
                         "FROM option_category oc " +
                         "INNER JOIN skill_option so " +
                         "   on oc.id=so.option_category_id " +
                         "INNER JOIN skill_option_master som "  +
                         "   on som.id=so.id; "

                         ,new string[] { "som.id", "som.name", "som.search_enabled", "oc.id", "oc.name" });

...

private List<string> getMultiColumnListFromDB(string query, string[] columnNames)
    {
        List<string> result = new List<string>();

        MySqlConnection con = new MySqlConnection(dbConnectionString);
        MySqlCommand cmd = new MySqlCommand(query, con);

        con.Open();

        MySqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            string strResult = "";
            foreach (string columnName in columnNames)
            {
                if (reader[columnName] == DBNull.Value) 
                    //If value is NULL, we assume yes/1
                    strResult = strResult + "1" + ";";
                else
                    strResult = strResult + reader[columnName].ToString() + ";";

            }
            result.Add(strResult.TrimEnd(';'));
        }
        return result;
    }

...我得到:System.IndexOutOfRangeException:'Could not find specified column in results: som.id' 在行:if (reader[columnName] == DBNull.Value)

作为测试,我在调试时将异常 window 中的查询复制回 Workbench 并且它在上面没有任何修改 1. Simpler queries (without joins) work fine within my app. I appreciate my code isn't the most elegant but I can't get over 1 的情况下工作。怎么可能?

谢谢

已修改 SQL 查询以别名列名:

SELECT som.id as 'som.id', som.name as 'som.name', som.search_enabled as 'som.search_enabled', oc.id as 'oc.id', oc.name as 'oc.name'
FROM option_category oc
INNER JOIN skill_option so
   on oc.id=so.option_category_id
INNER JOIN skill_option_master som
   on som.id=so.id;