按“扇区%”排序对象列表,然后按顺序排序其他所有对象

时间:2010-12-06 16:19:45

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

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

示例:

第1区 第2区北 第2区南 一切

这里

有序

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

2 个答案:

答案 0 :(得分:4)

假设这是对象的LINQ,那很简单:

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

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

答案 1 :(得分:1)

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