C#三元运算符列表运算符

C#三元运算符列表运算符,c#,list,operator-keyword,ternary-operator,C#,List,Operator Keyword,Ternary Operator,任何人都知道最快的三元运算 label1.Text = Cclass.TestMe() .Where(t => t.GFName == (textBox1.Text == "" ? "GName" : textBox1.Text))

任何人都知道最快的三元运算

label1.Text = Cclass.TestMe()
                    .Where(t => t.GFName == (textBox1.Text == "" 
                                              ? "GName" 
                                              : textBox1.Text))
                    .First()
                    .GFName == null ? 
              "Nothing" : 
              "Super";
我正在检查列表是否为空,并返回一些内容。因此编译器不会抛出异常或非故意错误。

此异常的原因是。如果没有要返回的行,它将抛出异常。相反,您可以使用它返回默认值(对于所有引用类型为NULL)。但如果要检查列表中是否有与条件匹配的元素,则必须使用扩展方法:

 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";

如果我理解正确,那么如果
where
子句返回某个值,那么您希望返回一个值,如果不返回,则返回另一个值。这将是:

label1.Text = Cclass.TestMe()
                    .Any(t => t.GFName == (textBox1.Text == "" 
                                              ? "GName" 
                                              : textBox1.Text)) ? 
              "Super" : 
              "Nothing";

如果这不是您想要的,那么重新安排您的代码以使用
If
语句使其工作,然后使其更好。丑陋的工作代码总比优雅的坏代码好。

这段代码有什么问题吗?不是所有的事情都需要在一个语句中完成…@DStanley是的,我知道了。)谢谢,我让它工作了@德斯坦利。我只是在练习三元数,你是对的,多行检查代码很容易。但我知道有一种方法可以做到这一点,在Stack Exchange,我知道这里的许多编码人员都有同样的感受,他们会以各种方式升级自己的知识。感谢Farhad对第一个FOD和任何方法的详细解释。让它发挥作用,现在为他们阅读相关的方法:DI将在我获得15%的声誉后立即更新。要求投票:D@Aizen很乐意帮忙。如果它解决了你的问题,你仍然可以标记为答案。祝你好运。@Aizen要将答案标记为已接受,请单击答案旁边的复选标记,将其从空心切换为绿色。