有人可以将此VB代码转换为c sharp。 [英] Can someone convert this VB code to c sharp.

查看:61
本文介绍了有人可以将此VB代码转换为c sharp。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  dbTaskOutput = Replace(dbTaskOutput,vbCrLf,"")



  &NBSP; &NBSP; &NBSP;如果dbTaskOutput<>什么都没有然后b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; errorCount = 0



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '迭代定义的关键字集合,并搜索每个
 的输出字符串。 &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;对于每个KeywordRow在KeywordMessages.Tables(0)。行中$ $ $ $ b $
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; bValidate = False



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '检查关键字是否已定义用于特定任务_ID
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果是IsDBNull(KeywordRow(" Task_ID"))那么就是
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; bValidate = True

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果(CInt(KeywordRow("Task_ID"))= TaskID)则为
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; bValidate = True

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果bValidate则为


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '应用为此关键字定义的字词搜索或字符串搜索

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果CBool​​(KeywordRow(" FindAsWord"))= True则为
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; MatchCount = CountInWord(dbTaskOutput,CStr(KeywordRow(" Keyword"))))
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; MatchCount = CountInstr(dbTaskOutput,CStr(KeywordRow(" Keyword"))))
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '应用逻辑(如果找到并且不要求)或(如果找不到并且要求)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果(MatchCount<> 0和CBool​​(KeywordRow(" Required))= False)或(MatchCount = 0和CBool​​(KeywordRow("Required"))= True)则为
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;如果MatchCount = 0则为
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; MatchCount = 1'这是检测'未找到'但需要匹配

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '根据'增量'标志增加或减少errorCount和匹配数量。
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; '递减用于取消与'无辜'字符串匹配的关键字匹配

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; errorCount = errorCount +(MatchCount * CInt(KeywordRow(" Increment"))))
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束如果



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;下一页



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;选择案例errorCount

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;案例0

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; stepResult ="成功< b
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;案例1

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; stepResult =" Failed," &安培; errorCount& "错误"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Case Else

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; stepResult =" Failed," &安培; errorCount& "错误"

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;结束选择



  &NBSP; &NBSP; &NBSP;否则&NBSP; &NBSP; 'dbTaskOutput字符串为空,因此将此标记为失败

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; stepResult ="失败,未找到输出结果"

  &NBSP; &NBSP; &NBSP;结束如果



  &NBSP; &NBSP; &NBSP; Dts.Variables(" User :: gvTaskResult")。Value = stepResult



  &NBSP; &NBSP; &NBSP;如果stepResult<> "成功"然后

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Dts.Variables(" User :: gvJobResult")。Value =" Failed"

  &NBSP; &NBSP; &NBSP;结束如果



  &NBSP; &NBSP; &NBSP; Dts.TaskResult = ScriptResults.Success



  &NBSP; End Sub

解决方案

最好的办法是通过VB.NET到C#转换器运行代码,通常代码需要修改,无论多好它是。


所以我通过转换器运行了一些代码并对其进行了调整,但仍然需要工作,因为你在那里有一些变量,我不知道它们是什么。 / p>

一个正在运行的开始并注意一个简单的调整是 

 KeywordRow(" Keyword")

 KeywordRow [" Keyword"] 


 foreach(KeywordMessages.Tables [0] .Rows中的DataRow KeywordRow)
{
bValidate = false;

//检查关键字是否定义用于特定的task_ID
if(Convert.IsDBNull(KeywordRow [" Task_ID"]))
{
bValidate = true;
}
else
{
if(Convert.ToInt32(KeywordRow [" Task_ID"])== TaskID)
{
bValidate = true;
}
}

if(bValidate)
{

//应用为此关键字$ b定义的单词搜索或字符串搜索$ b if(Convert.ToBoolean(KeywordRow [" FindAsWord"])== true)
{
MatchCount = CountInWord(dbTaskOutput,Convert.ToString(KeywordRow [" Keyword"]));
}
else
{
MatchCount = CountInstr(dbTaskOutput,Convert.ToString(KeywordRow [" Keyword"]));
}

//应用逻辑(如果找到并且不需要)或(如果找不到并且需要)
if((MatchCount!= 0&& Convert。 ToBoolean(KeywordRow [" Required"])== false)||(MatchCount == 0&& Convert.ToBoolean(KeywordRow [" Required"])== true))
{
if(MatchCount == 0)
{
MatchCount = 1; //这是检测'not found'但是必需匹配
}
//使用匹配数增加或减少errorCount,具体取决于'Increment'标志
//使用减量取消也匹配'无辜'字符串的关键字匹配
errorCount = errorCount +(MatchCount * Convert.ToInt32(KeywordRow [" Increment"]));
}
}
}





 dbTaskOutput = Replace(dbTaskOutput, vbCrLf, "")

        If dbTaskOutput <> Nothing Then
            errorCount = 0

            ' Iterate through the set of defined keywords, and search the output string for each
            For Each KeywordRow In KeywordMessages.Tables(0).Rows

                bValidate = False

                ' Check if the keyword is defined for use with a specific task_ID
                If IsDBNull(KeywordRow("Task_ID")) Then
                    bValidate = True
                Else
                    If (CInt(KeywordRow("Task_ID")) = TaskID) Then
                        bValidate = True
                    End If
                End If

                If bValidate Then

                    'Apply word search or string search as defined for this keyword
                    If CBool(KeywordRow("FindAsWord")) = True Then
                        MatchCount = CountInWord(dbTaskOutput, CStr(KeywordRow("Keyword")))
                    Else
                        MatchCount = CountInstr(dbTaskOutput, CStr(KeywordRow("Keyword")))
                    End If

                    'Apply logic (If found & not required) OR (If not found and required)
                    If (MatchCount <> 0 And CBool(KeywordRow("Required")) = False) Or (MatchCount = 0 And CBool(KeywordRow("Required")) = True) Then
                        If MatchCount = 0 Then
                            MatchCount = 1 ' this is to detect 'not found' but required matches
                        End If
                        'Increment or decrement errorCount with the number of matches, depending on the 'Increment' flag
                        'Decrement is used to cancel keyword matches that also match an 'innocent' string
                        errorCount = errorCount + (MatchCount * CInt(KeywordRow("Increment")))
                    End If
                End If

            Next

            Select Case errorCount
                Case 0
                    stepResult = "Success"
                Case 1
                    stepResult = "Failed, " & errorCount & " error"
                Case Else
                    stepResult = "Failed, " & errorCount & " errors"
            End Select

        Else    'The dbTaskOutput string was empty, so flag this as a failure
            stepResult = "Failed, no output found"
        End If

        Dts.Variables("User::gvTaskResult").Value = stepResult

        If stepResult <> "Success" Then
            Dts.Variables("User::gvJobResult").Value = "Failed"
        End If

        Dts.TaskResult = ScriptResults.Success

    End Sub

解决方案

The best thing to do is run the code through a VB.NET to C# converter, usually the code will need modifications no matter how good it is.

So I ran some of your code through a converter and tweaked it but still needs work as some of the variables you have in there I don't know what they are.

A running start and note one of the simply tweaks was 

KeywordRow("Keyword")

To

KeywordRow["Keyword"]

foreach (DataRow KeywordRow in KeywordMessages.Tables[0].Rows)
{
    bValidate = false;

    // Check if the keyword is defined for use with a specific task_ID
    if (Convert.IsDBNull(KeywordRow["Task_ID"]))
    {
        bValidate = true;
    }
    else
    {
        if (Convert.ToInt32(KeywordRow["Task_ID"]) == TaskID)
        {
            bValidate = true;
        }
    }

    if (bValidate)
    {

        //Apply word search or string search as defined for this keyword
        if (Convert.ToBoolean(KeywordRow["FindAsWord"]) == true)
        {
            MatchCount = CountInWord(dbTaskOutput, Convert.ToString(KeywordRow["Keyword"]));
        }
        else
        {
            MatchCount = CountInstr(dbTaskOutput, Convert.ToString(KeywordRow["Keyword"]));
        }

        //Apply logic (If found & not required) OR (If not found and required)
        if ((MatchCount != 0 && Convert.ToBoolean(KeywordRow["Required"]) == false) || (MatchCount == 0 && Convert.ToBoolean(KeywordRow["Required"]) == true))
        {
            if (MatchCount == 0)
            {
                MatchCount = 1; // this is to detect 'not found' but required matches
            }
            //Increment or decrement errorCount with the number of matches, depending on the 'Increment' flag
            //Decrement is used to cancel keyword matches that also match an 'innocent' string
            errorCount = errorCount + (MatchCount * Convert.ToInt32(KeywordRow["Increment"]));
        }
    }
}



这篇关于有人可以将此VB代码转换为c sharp。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆