以优雅的方式合并两个IEnumebles

时间:2014-09-10 13:19:01

标签: c#

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

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

if(ienumerable1 != null){
   if(ienumerable2 != null){
      return ienumerable1.Union(ienumerable2);
   }
   return ienumerable1;
}
else{
   return ienumerable2;
}

在更少的代码行中是否有更优雅的方法来执行此操作?

2 个答案:

答案 0 :(得分:16)

只检查null并指定Enumerable.Empty如果为null。这可以使用null coalescing operator ??

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

return ienumerable1.Union(ienumerable2);

答案 1 :(得分:0)

   var ienumerable1 = GetEnumerable1(); 
    var ienumerable2 = GetEnumerable2(); 
    return ienumerable1 != null
                    ? (ienumerable2 != null ? ienumerable1.Union(ienumerable2) : ienumerable1)
                    : ienumerable2;