我喜欢简短的代码,所以最近我试图将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;
感谢您提供可能的解决方案和知识共享。
答案 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
属性。