C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn)' 和 'System.Data.DataColumnCollection.Add(st

Posted

技术标签:

【中文标题】C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn)\' 和 \'System.Data.DataColumnCollection.Add(string)【英文标题】:C# ambiguous call DataColumnCollection.Add(System.Data.DataColumn)' and 'System.Data.DataColumnCollection.Add(string)C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn)' 和 'System.Data.DataColumnCollection.Add(string) 【发布时间】:2012-06-23 01:08:50 【问题描述】:

下面是我正在使用的代码,我以前用过这个 100x。现在它抛出了一个错误,基本上我正在尝试根据 excel 文件的第一行动态创建列。我现在收到的错误是:

The call is ambiguous between the following methods or properties: 'System.Data.DataColumnCollection.Add(System.Data.DataColumn)' and 'System.Data.DataColumnCollection.Add(string)'

DataTable excel_Holding_Table = new DataTable();
        DataRow row;
        Microsoft.Office.Interop.Excel.Range range = workSheet.UsedRange;
        for (int i = 1; i <= range.Columns.Count; i++)
        
            excel_Holding_Table.Columns.Add(Convert.ToString(((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, i]).Value2));
        

我需要做些什么来防止这种情况发生,这种情况从未出现过。

这是我的使用:

使用系统;
使用 System.Collections.Generic;
使用 System.ComponentModel;
使用 System.Data;
使用 System.Drawing;
使用 System.Linq;
使用 System.Text;
使用 System.Windows.Forms;
使用 System.Runtime.InteropServices;
使用 System.IO;

【问题讨论】:

【参考方案1】:

我的猜测是Convert.ToString 正在返回null,但是因为您正在动态调用Add,所以它无法根据实际类型计算出重载。

幸运的是,我们可以提高代码的可读性同时修复问题:

for (int i = 1; i <= range.Columns.Count; i++)

     // Note: Add using directive for Microsoft.Office.Interop.Excel
     Range range = (Range) workSheet.Cells[1, i];
     string value = Convert.ToString(range.Value2);
     excel_Holding_Table.Columns.Add(value);

【讨论】:

我同意。或者,您可以使用 range.Value2 的 ToString() 方法,因为它永远不会返回 null。

以上是关于C# 模糊调用 DataColumnCollection.Add(System.Data.DataColumn)' 和 'System.Data.DataColumnCollection.Add(st的主要内容,如果未能解决你的问题,请参考以下文章

c#模糊查询

C#字符串模糊匹配的问题

C# combobox 模糊搜索。

C# Access 模糊查询SQL语句

C# Linq的模糊查询(包含精确模糊查询)

使用 AForge C# 的模糊系统