mis*_*tle 2 c# linq lambda coalesce
基本上我有一个元素列表,我要在其中检索可以为null或costant字符串的属性.当然有一种程序方法可以做到这一点但是因为我正在尝试使用lambdas我想使用它们.
我试过用这个lambda:
td.Where(x => !String.IsNullOrEmpty(x.BALANCE_MU)).FirstOrDefault().BALANCE_MU
Run Code Online (Sandbox Code Playgroud)
这里的问题是有时候所有的x.BALANCE_MUs都是null,所以FirstOrDefault()是null并且尝试访问BALANCE_MU会抛出异常.如果所有元素都为null,我应该返回一个空字符串.
有没有更好的方法来保持lambda域?
您可以投影结果以避免异常:
var balance = td.Where(x => !String.IsNullOrEmpty(x.BALANCE_MU))
.Select(x => x.BALANCE_MU) // select property here
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
字符串的BTW默认值不是空字符串 - 它是null.如果你想要空字符串,那么建议使用@newStackExchangeInstance,你可以使用合并运算符: balance ?? "".
还有一个更新.FirstOrDefault如果您在过滤前进行投影,则可以使用oveloaded 方法:
var balance = td.Select(x => x.BALANCE_MU)
.FirstOrDefault(b => !String.IsNullOrEmpty(b)) ?? "";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4799 次 |
| 最近记录: |