如何在vb代码中使用IIf验证两个语句

时间:2015-04-14 03:33:06

标签: vb.net

我是VB的新手,我的任务是比较两个语句。请找到以下代码:

Dim obj As Object = TryCast(mBindingSource.Current,DataRowView).Item("Emp_Status")
Dim ProcessEmp As eProcessEmp = IIf((mEmployee.IsTrue And (obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)), eProcessEmp.SAVE, eProcessEmp.SUBMIT)

上面代码mEmployee.IsFalse我应该这样:

Dim ProcessEmp As eProcessEmp = IIf((mEmployee.IsFalse, eProcessEmp.Submit, eProcessEmp.Save)

如何将这两个语句合并为单个验证。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

目前你的逻辑似乎有点错误。

您首先IIF有这样的逻辑:

IIf(
    (mEmployee.IsTrue And (obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)),
    eProcessEmp.SAVE,
    eProcessEmp.SUBMIT
)

如果我们将mEmployee.IsFalse翻转为mEmployee.IsTrue,那么您的第二个就有这样的逻辑:

IIf(
    mEmployee.IsTrue,
    eProcessEmp.Save,
    eProcessEmp.Submit
)

这基本上意味着您在逻辑的第一部分忽略了(obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)条件。

但是,如果你想变得迂腐,那么你的组合逻辑是:

Dim ProcessEmp As eProcessEmp = IIf( _
    (Not mEmployee.IsFalse) Or _
        (mEmployee.IsTrue And _
            (obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)), _
    eProcessEmp.SAVE, _
    eProcessEmp.SUBMIT)

但是,再一次,整个条件减少到mEmployee.IsTrue - 所以你的逻辑出了问题。