我喜欢短代码,所以最近我在尝试将 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;
感谢您提供可能的解决方案和知识共享。
最佳答案
是的,您可以使用空传播运算符:
var userField = db.Users.FirstOrDefault(x => x.UserId == providedId)?.SomeUsefullField;
这里重要的是使用FirstOrDefault
,当找不到匹配项时,它将返回null
。然后使用 ?.
仅在表达式不返回 null
时获取 SomeUsefullField
属性。
关于c# - 里面的lambda表达式?? (如果是快捷方式)运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48516964/