C# 当FindAll c时对列表排序
我使用的是FindAll方法,它返回一个正确的列表C# 当FindAll c时对列表排序,c#,C#,我使用的是FindAll方法,它返回一个正确的列表 List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying == true); 但是当尝试使用 List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying == true) .Sort(delegate (Audi
List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying == true);
但是当尝试使用
List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying == true)
.Sort(delegate (AudioSource a1, AudioSource a2)
{
return a1.mixerIndex.CompareTo(a2.mixerIndex);
});
或
导致错误
严重性代码说明项目文件行抑制状态
错误CS0029无法将类型“void”隐式转换为
'System.Collections.Generic.List'
排序不返回列表吗
如何对FindAll的结果进行排序?FindAll返回一个新列表,但sort对列表进行适当排序,因此返回void
你可以做:
List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying);
playing.Sort(a1, a2 => a1.mixerIndex.CompareTo(a2.mixerIndex));
排序的返回类型是什么?检查排序的文档。如果使用deelegate方法播放,则列表有效。Sortdelegate AudioSource a1,AudioSource a2{return a1.mixeridex.CompareToa2.mixeridex;}@garrilla它可能有效,但它改变了原始集合,根据您的问题,它不是您所期望的。@vc74我怀疑他在调用playing。请在FindAll返回的列表上排序-即我的第一个解决方案-这很好。
List<AudioSource> playing = AudioSourceRegistry.FindAll(src => src.isPlaying);
playing.Sort(a1, a2 => a1.mixerIndex.CompareTo(a2.mixerIndex));
List<AudioSource> playing = AudioSourceRegistry
.Where(src => src.isPlaying)
.OrderBy(src => src.mixerIndex)
.ToList();