如果LINQ中的语句选择查询

时间:2016-10-10 05:36:45

标签: linq if-statement select

我有一个表呼叫员工,有两个字段调用StaffStatus和ParentStatus。当StaffStatus和ParentStatus都“可用”时,我想将状态显示为“可用”,当StaffStaus或ParentStatus为“不可用”时,我将状态显示为“不可用”。

Friend Function getAllUser(strInput As String) As IQueryable
getAllUser = From userDB In db.Staffs                    
             Select Status = userDB.UserStatus.Equals("Available") And userDB.ParentStatus.Equals("Available") ? "Available"  : (userDB.UserStatus.Equals("Unavailable") Or userDB.ParentStatus.Equals("Unavailable") ? "Unavailable")
End Function

但代码编辑器显示:字符“?”不能在这里使用和语法错误的第一个“(”at“:( userDB.UserStatus.Equals(”Unavailable“)”。我的代码有错误吗?

1 个答案:

答案 0 :(得分:1)

简单地说:VB.NET中没有三元运算符(当你使用它时) 请看这里:Is there a conditional ternary operator in VB.NET?

您必须使用Dim foo as String = If(bar = uz, cat, dog)构造

编辑: 试试这个

Dim getAllUser = From userDb In db.Staffs
                 Select New Staff() With
                     {
                     .UserStatus = If(userDb.UserStatus.Equals("Available") And userDb.ParentStatus.Equals("Available"), "Available", If(userDb.UserStatus.Equals("Unavailable") Or userDb.ParentStatus.Equals("Unavailable"), "Unavailable", "SomeOtherValue"))
                     }