无法将“方法组”转换为“List<DataTable>”。

3

我在代码中有一个方法:

private void SetSubReportDataSource(CrystalDecisions.CrystalReports.Engine.ReportDocument document, List<DataTable> tables, int counter)
        {
            if (tables.Count > 0)
            {
                System.Data.DataSet reportDataSet = AddTableInReportDataSet(tables);

                CrystalDecisions.CrystalReports.Engine.ReportDocument subReport = document.Subreports[counter];
                subReport.SetDataSource(reportDataSet);
            }
        }

我做了这个东西:
public List<DataTable> FillSubreport()
        {
            List<DataTable> ldt = new List<DataTable>();

            DataTable dt = new DataTable();
            dt.Columns.Add("SectionID");
            dt.Columns.Add("SectionName");

            dt.Rows.Add(new object[] { "1", "Subreport1"});
            dt.Rows.Add(new object[] { "2", "Subreport1" });
            dt.Rows.Add(new object[] { "3", "Subreport1" });

            ldt.Add(dt);
            return ldt;
        }

当尝试执行以下方式的第一个方法时:

SetSubReportDataSource(document, FillSubreport , subReportCounter);

FillSubreport被标记并且我收到了这个错误:

Cannot convert from 'method group' to 'List<DataTable>'

在某些情况下,例如 int arg = FillSubreport;,编译器会报错:"error CS0428: 无法将方法组 'FillSubreport' 转换为非委托类型 'int'。您是否打算调用该方法?" 但是,在您的情况下,这个最后的建议不幸地不是错误文本的一部分。 - Jeppe Stig Nielsen
2个回答

2
这似乎是你的代码中一个简单的语法错误:
SetSubReportDataSource(document, FillSubreport , subReportCounter);

您试图调用FillSubreport,但未在末尾添加()以指示它是一个方法。请尝试:

SetSubReportDataSource(document, FillSubreport(), subReportCounter);

1
你也可以尝试这样做,
List<DataTable> data = FillSubreport(); 

SetSubReportDataSource(document, data , subReportCounter);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接