【问题标题】:Ordering a List of Objects by 'Sector %' then everything else in Order按“扇区%”排序对象列表,然后按顺序排列其他所有内容
【发布时间】:2010-12-06 16:19:45
【问题描述】:

场景:我有一个扇区列表,需要先按扇区排序,然后再按顺序排序。

例子:

第 1 区
北区 2
南区 2
一切
来自
这里
开启
已订购

问题: LINQ 或其他方法有没有办法以这种方式对对象列表进行排序?该对象由 Sector_ID 和 Description(名称)组成。

【问题讨论】:

  • “按顺序”是什么意思?如果您指定一个顺序,那么您必须具体说明您希望对其进行排序的每个字段,如果不是,那么结果不是确定性的(在 LINQ 中,或在 SQL 中)超出您指定的范围。

标签: c# linq .net-3.5 sql-order-by


【解决方案1】:

假设这是 LINQ to Objects,这很容易:

// False comes before True, IIRC, so we want to a projection such that
// everything which starts with Sector maps to False, and everything else
// maps to True.
var query = list.OrderBy(x => !x.Description.StartsWith("Sector")) 
                .ThenBy(x => x.Description);

请注意,我可能误解了这个问题。可能你只是想要这样的东西:

var query = list.OrderBy(x => x.SectorId)
                .ThenBy(x => x.Description);

您的示例数据仅包含一列,但是您已经谈到了两列...如果您可以在问题中提供更多详细信息,那么给您一个有用的答案会更容易。

【讨论】:

    【解决方案2】:

    您应该能够通过为对象的 Sort 方法提供一个比较来对列表进行排序,该方法将首先比较 Sector_ID,然后是描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 2015-04-20
      • 1970-01-01
      • 2011-11-10
      • 2019-05-31
      • 2015-10-06
      • 2017-03-18
      • 1970-01-01
      相关资源
      最近更新 更多