无法分配给GetDropDownValues,因为它是一个方法组?

时间:2018-05-31 19:41:05

标签: c# .net

我对下面的代码有疑问,我试图从通用查询中获取下拉值,传递字段和表名。我收到错误无法分配给GetDropDownValues,因为它是一个方法组,不知道如何解决?任何人都能解释一下吗?提前谢谢......

    public static DataTable GetDropDownValues(string pstrConString_Mfg, string pstrTableName, string pstrFieldName, string pstrField = "")
    {
        string strSQL;
        DataTable dtRetTable;

        try
        {
            strSQL = "SELECT DISTINCT " + pstrFieldName;

            if (pstrField != "")
            {
                strSQL = strSQL + " , " + pstrField;
            }

            strSQL = strSQL + " FROM " + pstrTableName + " ORDER BY " + pstrFieldName;

            dtRetTable = ExecuteDataTable(pstrConString_Mfg, CommandType.Text, strSQL);
            if (dtRetTable != null)
            {
                if ((dtRetTable.Rows.Count == 0))
                {
                    GetDropDownValues = new DataTable(); <--error
                }
                else
                {
                    dtRetTable.BeginLoadData();
                    dtRetTable.Rows.InsertAt(dtRetTable.NewRow, 0); 
                    dtRetTable.EndLoadData();
                    dtRetTable.AcceptChanges();
                    GetDropDownValues = dtRetTable;
                }
            }
            else
            {
                GetDropDownValues = new DataTable();
            }
        }
        catch (Exception ex)
        {
            throw ex;

        }
    }

- ============================================= =====

我也在线上'dtRetTable.Rows.InsertAt(dtRetTable.NewRow,0);' 无法从'方法组'转换为'DataRow'。我假设它与上述错误有关?

1 个答案:

答案 0 :(得分:1)

你写的GetDropDownValues = dtRetTable;GetDropDownValues = new DataTable();看起来像旧的Visual Basic(也是Visual Basic for Applications,VBA)语法,让函数返回一个值。

使用C#(以及C,C ++,Java,JavaScript和许多其他人),您需要return一个值,而不是将其分配给函数名。

请改为:

return dtRetTable;

new DataTable();

编辑以解决您的其他问题...

对于{@ 1}}行上的错误,正如@Ed所说,Plunkett建议将解决此问题。正如您所说,您正在将旧代码转换为使用C#工作,很容易忘记根据C#的要求添加尾部括号dtRetTable.Rows.InsertAt(dtRetTable.NewRow, 0)但是您得到()的错误消息 - 嗯,我&# 39;当我忘记把括号括进来时,我才见过它,所以你会更容易理解发生了什么。

最后,除非你打算在那里做一些关于异常的事情,否则不要捕获异常。您应始终在Interface方法中捕获Exception,以便向用户显示更好的消息并防止应用程序崩溃。

你写method group的地方,最好只写throw ex;或者你愿意,完全删除try / catch块。当您throw时,您将销毁正确的 StackTrace ,这对于调试和确定问题是至关重要的。在StackOverflow以及Web的其余部分中,有很多信息(以及更多深入的信息)。

快乐翻译,记住我们喜欢帮助那些试图先帮助自己的人。