2014-11-14 74 views
1

当我跑我的项目,会显示以下错误信息:错误:“以下方法或属性之间的调用不明确”?

The call is ambiguous between the following methods or properties: 'Microsoft.Reporting.WinForms.ReportDataSource.ReportDataSource(string, System.Collections.IEnumerable)' and '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(); 

    } 
+0

'dsFirstReport.dtLoaiHangDataTable'实现了哪些类型? – Rotem 2014-11-14 14:07:27

+0

'dsFirstReport.dtLoaiHangDataTable'是否从'DataTable'继承并实现'IEnumerable'?如果是这样,那就是为什么它不知道选择哪个。 – juharr 2014-11-14 14:10:26

+0

dsFirstReport是表LoaiHang的数据集 – 2014-11-14 14:13:54

回答

2

从错误信息,很明显,类型dsFirstReport.dtLoaiHangDataTable继承DataTable类型和实现IEnumerable

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

reportViewer1.LocalReport.DataSources.Add(
    new ReportDataSource("dsFirstReport_DataSet1", (IEnumerable)dt)); 
相关问题