我这里有一行代码是用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() 在该行末尾出现以下错误:
MoreLinq.Extensions.AppendExtension
FirstOrDefault()
“MyClass”不包含“FirstOrDefault”的定义,并且找不到接受“MyClass”类型的第一个参数的可访问扩展方法“FirstOrDefault”(是否缺少using指令或程序集引用?)
我也尝试过删除MoreLinq,但我得到了同样的结果。它不包含FirstOrDefault错误的定义。
解决这个问题的最佳方法是什么?
MaxBy 和 DistinctBy .NET6中引入了方法,如果使用 MoreLinq 。如果你不需要 更多Linq 方法只需将其删除或替换为 using System.Linq; (如果未使用全局/隐式using)。
MaxBy
DistinctBy
MoreLinq
更多Linq
using System.Linq;
如果您仍然需要这两者,可以使用在名称空间之前和之后拆分导入的技巧(尽管这可能有点深奥):
// ... 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