我发现了一个有趣的代码段,该代码段使用Where()和foreach而不是预期的方式。但是,它们的用法似乎是一个非常有趣的解决方案,可以显着减少代码行。
// a, b, c are IEnumerable<string> of any data source and could be expensive to iterate
string GetFirstString(){
foreach( var str in a.Where(...) )
return str;
foreach( var str in b.Where(...) )
return str;
foreach( var str in c.Where(...) )
return str;
return "";
}
有没有一个更好的方法可以做到这一点,但又不“滥用” Where和foreach?
更新:
如果任何列表包含一个空条目并且Where谓词允许该空条目通过,那么它将返回null。(在大多数情况下,应该使GetFirstString跳过空值)
试试这个:
string GetFirstString(){
return a.FirstOrDefault(...)
?? b.FirstOrDefault(...)
?? c.FirstOrDefault(...)
?? "";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句