我是C#的新手,试图让这段代码正常工作,但一直没有成功。它在vb中工作但由于某些原因在C#中得到这个错误:参数1:无法从对象转换为字符串,最好的重载方法匹配有一些无效的参数。任何帮助都会非常有用。
这是我的代码
VB
If sqlObj.sel_all_airlines(row("COMPANY")).tables(0).rows.count > 1 Then
end if
C#
if (sqlObj.sel_all_airlines(row["COMPANY"]).Tables[0].Rows.Count > 1){}
答案 0 :(得分:6)
试试这个:
if (sqlObj.sel_all_airlines(row["COMPANY"] as string).Tables[0].Rows.Count > 1){
}
答案 1 :(得分:1)
您可能已经在VB.Net中启用了隐式类型转换功能,因此与它正在进行的操作更加匹配:
if (sqlObj.sel_all_airlines(row["COMPANY"].ToString()).Tables[0].Rows.Count > 1){
}
答案 2 :(得分:1)
试试上面的
if (sqlObj.sel_all_airlines(row["COMPANY"].Tostring()).Tables[0].Rows.Count > 1){
}
答案 3 :(得分:1)
尝试显式转换为String
:
if (sqlObj.sel_all_airlines((String)row["COMPANY"]).Tables[0].Rows.Count > 1){
}
答案 4 :(得分:1)
if (sqlObj.sel_all_airlines((string)row["COMPANY"]).Tables[0].Rows.Count > 1)
答案 5 :(得分:0)
我假设方法If sqlObj.sel_all_airlines
返回DataSet
。然后你要检查第一个表中是否至少有一行(旁注:它可能更适合返回DataTable
)。
如果在中间使用变量,通常更容易理解,维护或扩展(或只是转换为C#),例如:
VB.NET
Dim companyTable As DataTable = sqlObj.sel_all_airlines(row("COMPANY")).Tables(0)
If companyTable.Rows.Count > 1 Then
' ...
C#
DataTable companyTable = sqlObj.sel_all_airlines(row["COMPANY"]).Tables[0];
if(companyTable.Rows.Count > 1)
{
// ...
您还应该在项目的编译器设置中将Option Strict
和Option Explicit
设置为ON。然后你必须修复几个编译器错误和警告。但这是值得的,因为它提供了强大的输入,防止意外类型转换,数据丢失,不允许后期绑定,并提高性能,强烈建议使用它。
之后的代码也更像C#(除了语法)。