gpt4 book ai didi

c# - 结合分组和排序的 LINQ 查询

转载 作者:太空狗 更新时间:2023-10-29 22:30:22 24 4
gpt4 key购买 nike

我是 LINQ 的新手,目前正在处理结合了分组和排序的查询。我将从这里的一个例子开始。基本上我有一个表示为字符串的任意数字序列:

List<string> sNumbers = new List<string> {"34521", "38450", "138477", "38451", "28384", "13841", "12345"}

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

{"38450", "38451", "13841", "28384", "138477"}

我是这样开始的:

outputlist = (from n in sNumbers
where n.Contains(searchPattern
select n).ToList();

现在我们有了包含搜索模式的所有数字。这就是我被困的地方。我知道此时我需要将结果“分组”为两个序列。一种以搜索模式开头,另一种则不开头。然后按字母顺序在每个组中应用二次排序。我如何编写一个结合了所有这些的查询?

最佳答案

我认为您不需要任何分组,也不需要列表拆分来获得您想要的结果,所以我不会回答关于组合和分组的问题,而是发布我会做些什么来获得想要的结果:

sNumbers.Where(x=>x.Contains(pattern))
.OrderByDescending(x => x.StartsWith(pattern)) // first criteria
.ThenBy(x=>Convert.ToInt32(x)) //this do the trick instead of GroupBy
.ToList();

关于c# - 结合分组和排序的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com