代码不能用 .Net 5.0 编译(但可以用 6.0)

Code does not compile with .Net 5.0 (but does with 6.0)

我正在学习 C# 函数式编程。我正在关注示例,并且有一个不使用 .Net 5.0 编译的分区定义(如下所示)。它确实适用于 6.0。 我在发现错误时遇到问题,想知道是否有人可以提供帮助。

public static (IEnumerable<T> Passed, IEnumerable<T> Failed) Partition<T>
    (
       this IEnumerable<T> source,
       Func<T, bool> predicate
    )
    {
        var grouped = source.GroupBy(predicate);
        return
        (
           Passed: grouped.Where(g => g.Key).FirstOrDefault(Enumerable.Empty<T>()), //(ERROR)
           Failed: grouped.Where(g => !g.Key).FirstOrDefault(Enumerable.Empty<T>())  //(ERROR)
        );
    }

错误是

CS1503 Argument 2: cannot convert from 'System.Collections.Generic.IEnumerable' to 'System.Func<System.Linq.IGrouping<bool, T>, bool>'

如何更改它以在 .Net 5.0 中工作?

TIA

这个

        Passed: grouped.Where(g => g.Key).FirstOrDefault()??Enumerable.Empty<T>(), //(ERROR)
        Failed: grouped.Where(g => !g.Key).FirstOrDefault()??Enumerable.Empty<T>()  //(ERROR)
如果没有条目,

FirstOrDefault 将 return 为 null,?? 表示 'if lhs is null then use the rhs'