以下方法和属性之间的调用不明确- Linq和MoreLinq

hfwmuf9z  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(171)

我有一行代码是用MoreLinq写的:

var maxPage = _pageState?.Value?.Pages?.MaxBy(p => p.Type.Grids["desktop"].ColCount)?.FirstOrDefault();

因为我的解决方案同时使用了MoreLinq和Linq,所以我得到了以下错误:
以下方法或属性之间的调用不明确:"更多链接.更多可枚举.可区分依据〈TSource,TKey〉(系统.集合.通用.可枚举,系统.函数〈TSource,TKey〉)"和"系统.链接.可枚举.可区分依据〈TSource,TKey〉(系统.集合.通用.可枚举,系统.函数〈TSource,TKey〉)"
我已尝试将以下静态扩展添加到我的文档:MoreLinq.Extensions.AppendExtension,但这会在行尾错误输出FirstOrDefault(),错误如下:
"MyClass"不包含"FirstOrDefault"的定义,并且找不到接受"MyClass"类型的第一个参数的可访问扩展方法"FirstOrDefault"(是否缺少using指令或程序集引用?)
我也尝试过删除morelinq,但我得到的相同不包含defition的firstordefault错误。
解决这个问题的最佳方法是什么?

tv6aics1

tv6aics11#

NET 6中引入了MaxByDistinctBy方法,如果您使用MoreLinq,则会导致上述问题。如果您不需要任何MoreLinq方法,只需将其删除或替换为using System.Linq;(如果您不使用全局/隐式用法)。
如果你仍然需要这两个,你可以使用在before和after命名空间上分割导入的技巧(尽管它可能有点深奥):

// ... common imports
using MoreLinq.Extensions;

namespace YourNameSpace;
{
    using System.Linq; // default LINQ methods will be preferred

    // ... code
}

或者只对需要的方法使用静态导入(见@github):

using static MoreLinq.Extensions.BatchExtension; // import classes holding needed extensions

相关问题