代码不能用 .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'
我正在学习 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'