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的主要内容,如果未能解决你的问题,请参考以下文章