以优雅的方式合并两个IEnumebles

TOP*_*KEK 4 c#

我有两个IEnumerable变量,两者都可以为null.我需要将它们合并到一个列表中.这是直接的方法.

var ienumerable1 = GetEnumerable1(); 
var ienumerable2 = GetEnumerable2(); 

if(ienumerable1 != null){
   if(ienumerable2 != null){
      return ienumerable1.Union(ienumerable2);
   }
   return ienumerable1;
}
else{
   return ienumerable2;
}
Run Code Online (Sandbox Code Playgroud)

在更少的代码行中是否有更优雅的方式来做到这一点?

Sco*_*ain 16

只检查null并指定Enumerable.Empty它是否为null.这可以使用null合并运算符一步完成 ??

var ienumerable1 = GetEnumerable1() ?? Enumerable.Empty<WhateverType>();
var ienumerable2 = GetEnumerable2() ?? Enumerable.Empty<WhateverType>(); 

return ienumerable1.Union(ienumerable2);
Run Code Online (Sandbox Code Playgroud)

  • 您可以编写自己的联合扩展,在封面下进行此替换. (2认同)