LINQ查询结合了分组和排序

Fik*_*man 5 c# linq sorting list

我相对较新LINQ,目前正在开发一个结合分组和排序的查询.我将从这里开始一个例子.基本上我有一个任意的数字序列表示为字符串:

List<string> sNumbers = new List<string> {"34521", "38450", "138477", "38451", "28384", "13841", "12345"}
Run Code Online (Sandbox Code Playgroud)

我需要sNumbers在此列表中找到包含搜索模式(例如"384")的所有内容,然后返回已过滤的序列,sNumbers以便首先对以搜索模式("384")开头的序列进行排序,然后对sNumbers包含搜索模式的剩余部分进行排序某处.所以它会是这样的(请注意组中的字母排序):

{"38450", "38451", "13841", "28384", "138477"}
Run Code Online (Sandbox Code Playgroud)

这是我开始的方式:

outputlist = (from n in sNumbers
                where n.Contains(searchPattern
                select n).ToList();
Run Code Online (Sandbox Code Playgroud)

所以现在我们拥有包含搜索模式的所有数字.这就是我被困的地方.我知道在这一点上我需要将结果"分组"成两个序列.一个以搜索模式开始,另一个不是.然后按字母顺序在每个组中应用辅助排序.如何编写一个结合了所有这些的查询?

Eni*_*ity 2

这看起来相当简单,除非我误解了一些东西:

List<string> outputlist = 
    sNumbers
        .Where(n => n.Contains("384"))
        .OrderBy(n => int.Parse(n))
        .OrderByDescending(n => n.StartsWith("384"))
        .ToList();
Run Code Online (Sandbox Code Playgroud)

我明白了:

输出列表