C#LINQ使用了错误的比较
我正在尝试这样的事情:C#LINQ使用了错误的比较,c#,linq,C#,Linq,我正在尝试这样的事情: List<MyType> sortedList = one.Concat(two).ToList(); // one and two are both List<MyType> sortedList.Sort((a, b) => a.Value.CompareTo(b.Value)); 当我尝试构建此文件时,会出现以下错误: 错误CS7036:未给出与“MemoryExtensions.CompareTo(ReadOnlySpan、Read
List<MyType> sortedList = one.Concat(two).ToList(); // one and two are both List<MyType>
sortedList.Sort((a, b) => a.Value.CompareTo(b.Value));
当我尝试构建此文件时,会出现以下错误:
错误CS7036:未给出与“MemoryExtensions.CompareTo(ReadOnlySpan、ReadOnlySpan、StringComparation)”的必需形式参数“comparisonType
”相对应的参数
看起来它试图使用char的CompareTo
,而不是long
如何修复此问题?我不知道是什么原因导致了原始错误
使用OrderBy
而不是Sort
生成无错误的代码,但是:
List<MyType> sortedList = one.Concat(two).OrderBy(x => x.Value).ToList();
List-sortedList=one.Concat(两个).OrderBy(x=>x.Value.ToList();
所以我将使用这个方法。列表变量的类型是什么?请注意,List.Sort
将列表排序到位-它不会返回新列表。你的意思是“订购者”
?@DStanley现在这个问题更像我的代码了我刚刚运行了你的代码。。它编译得很好。结果也进行了排序。您不能做的一件事是将.Sort()作为void方法分配给变量。排序将对列表进行适当的排序。您确定这段特定的代码导致了您的问题吗?提供的代码使用long按预期进行编译和排序。看到跨距的使用,我相信这个问题与long之外的其他问题有关(除非为了示例而简化了类型)。任何额外的上下文/代码可能会有帮助,因为我没有看到任何问题,它是不欢迎的评论:考虑重新阅读指南发布代码。
List<MyType> sortedList = one.Concat(two).OrderBy(x => x.Value).ToList();