将代码从VB转换为C#

时间:2013-06-10 12:26:50

标签: c#

我是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){}

6 个答案:

答案 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 StrictOption Explicit设置为ON。然后你必须修复几个编译器错误和警告。但这是值得的,因为它提供了强大的输入,防止意外类型转换,数据丢失,不允许后期绑定,并提高性能,强烈建议使用它。

之后的代码也更像C#(除了语法)。