任何人都知道最快的三元手术。
label1.Text = Cclass.TestMe()
.Where(t => t.GFName == (textBox1.Text == ""
? "GName"
: textBox1.Text))
.First()
.GFName == null ?
"Nothing" :
"Super";
我试图检查List是否为空返回一些东西。因此编译器不会抛出异常或无错误。
答案 0 :(得分:1)
此 例外 的 原因 为First()
。如果没有要返回的行,它将抛出异常。而不是你可以使用FirstOrDefault()
来返回默认值(所有引用类型为NULL)。但是如果你想检查列表中是否有任何元素来计算条件,那么你必须使用Any()
扩展方法:
return Cclass.TestMe()
.Any(t => t.GFName == (textBox1.Text == "" ? "GName" : textBox1.Text)) ?
"Super" :
"Nothing";
顺便说一下,最好在查询之外设置文字:
var filteredText = textBox1.Text == "" ? "GName" : textBox1.Text;
return Cclass.TestMe().Any(t => t.GFName == filteredText) ?
"Super" :
"Nothing";
答案 1 :(得分:0)
如果我理解正确,如果where
子句返回某个值,则返回一个值,否则返回另一个值。那将是:
label1.Text = Cclass.TestMe()
.Any(t => t.GFName == (textBox1.Text == ""
? "GName"
: textBox1.Text)) ?
"Super" :
"Nothing";
如果这不是你想要的,那么重新安排你的代码以使用if
语句使其工作,然后使其更好。丑陋的工作代码总是比优雅的破解代码更好。