代码之家  ›  专栏  ›  技术社区  ›  Adil15

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

  •  0
  • Adil15  · 技术社区  · 1 年前

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

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

    因为我的解决方案同时使用MoreLinq和Linq,所以我得到了以下错误:

    以下方法或属性之间的调用不明确:“MoreLinq.MoreEnumerable.DistinctBy<TSource、TKey>“(System.Collections.Generic.IEnumerable,System.Func<TSource,TKey>)”和“System.Linq.Enumerable.DistinctBy<”;TSource、TKey>(System.Collections.Generic.IEnumerable,System.Func<TSource,TKey>)

    我已尝试将以下静态扩展添加到文档中: MoreLinq.Extensions.AppendExtension 但这是错误的 FirstOrDefault() 在该行末尾出现以下错误:

    “MyClass”不包含“FirstOrDefault”的定义,并且找不到接受“MyClass”类型的第一个参数的可访问扩展方法“FirstOrDefault”(是否缺少using指令或程序集引用?)

    我也尝试过删除MoreLinq,但我得到了同样的结果。它不包含FirstOrDefault错误的定义。

    解决这个问题的最佳方法是什么?

    1 回复  |  直到 1 年前
        1
  •  2
  •   Guru Stron    1 年前

    MaxBy DistinctBy .NET6中引入了方法,如果使用 MoreLinq 。如果你不需要 更多Linq 方法只需将其删除或替换为 using System.Linq; (如果未使用全局/隐式using)。

    如果您仍然需要这两者,可以使用在名称空间之前和之后拆分导入的技巧(尽管这可能有点深奥):

    // ... 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