C# 当FindAll c时对列表排序

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

我使用的是FindAll方法,它返回一个正确的列表

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();