【发布时间】:2014-03-01 04:08:13
【问题描述】:
我有一个名为 jobList 的自定义对象列表。该列表有很多字段,但我想按两个字段排序,FolderID 和 JobName。该列表如下所示:
job.FolderID = 3
job.JobName = "oper01_quick"
job.FolderID = 3
Job.JobName = "oper02_quick"
job.FolderID = 1
job.JobName = "min01_selfie"
job.FolderID = 2
job.JobName = "max01_experion"
job.FolderID = 2
job.JobName = "max02_experion"
我想对该列表进行排序,使其如下所示:
job.FolderID = 1
job.JobName = "min01_selfie"
job.FolderID = 2
job.JobName = "max01_experion"
job.FolderID = 2
job.JobName = "max02_experion"
job.FolderID = 3
job.JobName = "oper01_quick"
job.FolderID = 3
Job.JobName = "oper02_quick"
而且我认为如果我执行此 LINQ OrderBy,则 ThenBy:
jobList.OrderBy(j => j.FolderID).ThenBy(j => j.JobName);
它会做到这一点。但事实并非如此。它使订单看起来像这样:
job.FolderID = 1
job.JobName = "min01_selfie"
job.FolderID = 2
job.JobName = "max01_experion"
job.FolderID = 3
job.JobName = "oper01_quick"
job.FolderID = 2
job.JobName = "max02_experion"
job.FolderID = 3
Job.JobName = "oper02_quick"
谁能帮我正确排序列表?
谢谢,
咀嚼狗
【问题讨论】:
-
我们可以假设
FolderID是int而JobName是string? -
你能分享实际的代码,而不是在代码块中写出一些东西的列表吗?
-
您是否将
OrderBy().ThenBy调用的结果分配给了某些东西?这些方法没有就地排序。他们创建带有排序项目的新集合。 -
我创建了一个
Job类来反映你的类,然后对OrderBy和ThenBy使用相同的调用,并且它正确排序。 Marcin 指出列表没有就地排序是正确的 - 您需要将方法的结果分配给某些东西。