错误:“以下方法或属性之间的调用不明确”?

当我运行我的项目时,会显示以下错误消息:

以下方法或属性之间的调用不明确:’Microsoft.Reporting.WinForms.ReportDataSource.ReportDataSource(string,System.Collections.IEnumerable)’和’Microsoft.Reporting.WinForms.ReportDataSource.ReportDataSource(string,System.Data.DataTable) )。

为什么?

firstReportDBDataContext dc = new firstReportDBDataContext(); private void Form1_Load(object sender, EventArgs e) { dsFirstReport.dtLoaiHangDataTable dt = new dsFirstReport.dtLoaiHangDataTable(); var query = from a in dc.tblLoaiHangHoas select a; foreach (tblLoaiHangHoa a in query) { dt.Rows.Add(a.MaLoai, a.TenLoai); } this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("dsFirstReport_DataSet1",dt)); this.reportViewer1.RefreshReport(); } 

从错误消息中可以清楚地看到, dsFirstReport.dtLoaiHangDataTable类型inheritance了DataTable类型并实现了IEnumerable

您可以通过将参数转换为其中一个来解决编译器的歧义。 例如:

 reportViewer1.LocalReport.DataSources.Add( new ReportDataSource("dsFirstReport_DataSet1", (IEnumerable)dt));