Linq方法将null转换为空IEnumerable <T>?

rec*_*ive 9 c# linq ienumerable

我正在处理从第三方API返回给我的一些数组.有时这些回来了null.除了null case之外,我能够使用LINQ优雅地处理所有内容.我提出了这样的事情:

IEnumerable<Thing> procs = APICall(foo, bar);
var result = from proc in procs ?? Enumerable.Empty<Thing>()
    where proc != null
    select Transform(proc);
Run Code Online (Sandbox Code Playgroud)

在这里使用聚结操作员有点烦恼.我错过了处理这个问题的LINQ吗?

Red*_*dog 12

这实际上与您拥有的解决方案相同,但我使用的是扩展方法.

public static partial class EnumerableExtensions
{
    public static IEnumerable<T> EmptyIfNull<T>(this IEnumerable<T> source)
    {
        return source ?? Enumerable.Empty<T>();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我们最终得到:

IEnumerable<Thing> procs = APICall(foo, bar);
var result = from proc in procs.EmptyIfNull()
             where proc != null
             select Transform(proc);
Run Code Online (Sandbox Code Playgroud)