5

最近我升级了我的一个项目以使用.NET 6. 早些时候,我使用MoreLinq库将DistinctBy()其应用于特定属性。

现在,当我将 TargetFramework 升级.NET 6DistinctBy().

现在编译器对DistinctBy()需要选择哪个感到困惑,我不能依赖System.Linq,因为删除using MoreLinq会导致多个其他错误。

我知道如果我们在相同方法之间遇到歧义,那么我们可以使用using alias,但我不确定如何使用using aliasLinq 扩展方法。

这是错误:

在此处输入图像描述

我可以在下面的小提琴中复制同样的问题

在线尝试

4

2 回答 2

4

为避免在使用 MoreLinq 时发生冲突,同时仍将它们用作扩展方法,您可以像这样导入所需的 MoreLinq 方法:

using static MoreLinq.Extensions.LagExtension;
using static MoreLinq.Extensions.LeadExtension;

因此,在您的情况下,您可以从 usings 中删除 MoreLinq,然后在文件中单独导入您需要的任何 MoreLinq 扩展方法,如上所示。

您可以在MoreLinq Github 页面上了解它

于 2022-01-17T09:00:48.643 回答
3

您不能为扩展方法设置别名,但您可以使用完整的命名空间像普通方法一样调用扩展。毕竟,扩展方法实际上只是语法糖。例如(使用您在小提琴中提供的相同数据):

var inputs =  new []
{
    new {Name = "Bruce wayne", State = "New York"},
    new {Name = "Rajnikant", State = "Tamil Nadu"},
    new {Name = "Robert Downey jr", State = "Pennsylvania"},
    new {Name = "Dwane Johnson", State = "Pennsylvania"},
    new {Name = "Hritik", State = "Maharashtra"}
};
    
var net6DistinctBy = System.Linq.Enumerable.DistinctBy(inputs, x => x.State);
var moreLinqDistinctBy = MoreLinq.MoreEnumerable.DistinctBy(inputs, x => x.State);
于 2021-11-10T17:46:58.160 回答