Lambda表达里面?? (如果是快捷键)运算符

时间:2018-01-30 08:27:56

标签: c# if-statement lambda

我喜欢简短的代码,所以最近我试图将if语句和Linq查询与lambda表达式放在一行中。

是否可以执行以下操作:

db.Users.First(x => x.UserId == providedId)??x.SomeUsefullField

如果找不到用户,则返回null;如果用户确实存在,则返回某些字段的值。

是否可以在没有首先获得用户的情况下获得,而不是像这样得到字段值:

var user = db.Users.First(x => x.UserId == providedId);
var fieldValue = user.SomeUsefullField;

感谢您提供可能的解决方案和知识共享。

1 个答案:

答案 0 :(得分:6)

是的,您可以使用空传播运算符:

class TestSuite(object):
    def setup(self):
        if (do_this): 
            ...

此处重要的是使用var userField = db.Users.FirstOrDefault(x => x.UserId == providedId)?.SomeUsefullField; ,当找不到匹配项时,FirstOrDefault会返回null。然后使用?.仅在表达式未返回SomeUsefullField时获取null属性。