[英]Lambda expression inside ?? (if shortcut) operator
I like short code, so recently I was trying to fit if statement and Linq query with lambda expression in one line. 我喜欢短代码,因此最近我试图在一行中使用带lambda表达式的if语句和Linq查询。
Is it possible to do something like: 是否可以做类似的事情:
db.Users.First(x => x.UserId == providedId)??x.SomeUsefullField
That should return null if user not found, and value of some field if user does exists. 如果找不到用户,则应返回null;如果存在用户,则应返回某个字段的值。
Is it possible to do without first getting user and than getting field value like this: 是否可以在没有先获得用户且没有像这样获得字段值的情况下做:
var user = db.Users.First(x => x.UserId == providedId);
var fieldValue = user.SomeUsefullField;
Thank you for possible solution and knowledge sharing. 感谢您提供可能的解决方案和知识共享。
Yes, you can use the null propagation operator: 是的,您可以使用空传播运算符:
var userField = db.Users.FirstOrDefault(x => x.UserId == providedId)?.SomeUsefullField;
Important here is to use FirstOrDefault
, which will return null
when no match is found. 重要的是要使用
FirstOrDefault
,如果找不到匹配FirstOrDefault
,它将返回null
。 Then use ?.
然后使用
?.
to only get the SomeUsefullField
property when the expression doesn't return null
. 仅在表达式不返回
null
时获得SomeUsefullField
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.