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

max*_*986 1 c# lambda if-statement

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

有可能做这样的事情:

db.Users.First(x => x.UserId == providedId)??x.SomeUsefullField
Run Code Online (Sandbox Code Playgroud)

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

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

var user = db.Users.First(x => x.UserId == providedId);
var fieldValue = user.SomeUsefullField;
Run Code Online (Sandbox Code Playgroud)

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

Pat*_*man 6

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

var userField = db.Users.FirstOrDefault(x => x.UserId == providedId)?.SomeUsefullField;
Run Code Online (Sandbox Code Playgroud)

这里重要的是使用FirstOrDefault,null当找不到匹配时将返回.然后使用?.SomeUsefullField在表达式未返回时获取属性null.