简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM