如何在linq查询的where子句中放置If / Else语句?

时间:2017-07-16 18:16:13

标签: c# linq

如何在此linq语句中放置if else?

z <- readLines("file.txt")
y <- z[grep("^>", z, invert=TRUE)]
writeLines(y, "file.txt")

我想做点什么

where instruct.InstructorInstrNo == royalHIstory.RoyalIns.ToString()

我认为在使用lambda表达式时可以做类似的事情,但我的查询没有并且不确定如何将我的查询转换为只使用lambda表达式

2 个答案:

答案 0 :(得分:4)

它被称为ternary operator或三元条件运算符(?:)

where instruct.InstructorInstrNo == 
    (royalHIstory.RoyalIns.ToString().Length == 3
    ? "0" + royalHIstory.RoyalIns.ToString()
    : royalHIstory.RoyalIns.ToString())

或者,使用PadLeft功能

where instruct.InstructorInstrNo == royalHIstory.RoyalIns.ToString().PadLeft(4, '0')

或简单地(假设RoyalIns是整数类型)

where instruct.InstructorInstrNo == royalHIstory.RoyalIns.ToString("0000")

答案 1 :(得分:3)

使用conditional operator

where instruct.InstructorInstrNo == ((royalHIstory.RoyalIns.ToString().Length == 3) ? 
                                   "0" + royalHIstory.RoyalIns.ToString() : royalHIstory.RoyalIns.ToString())

来自文档:

  

条件运算符(?:)根据需要返回两个值中的一个   布尔表达式的值。