Linq:按不规则顺序排序

时间:2015-12-09 16:46:39

标签: c# linq sorting

我有一份城市名单。每个城市都有一个CarbonId(int)

我希望按此顺序排序城市列表CarbonId:3,6,2,7,9

有没有办法按CarbonId数组排序[3,6,2,7,9]?

List<City> cities = db.GetCities.SortByIrreguylarCarbonId([3,6,2,7,9]??????)

2 个答案:

答案 0 :(得分:5)

只需创建所需的方法:

class City
{
    public int CarbonId { get; set; }

    public static IOrderedEnumerable<City> OrderByIrregularCarbonId(
         IEnumerable<City> sequence,
         params int[] carbons)
    {
        return sequence.OrderBy(T => Array.IndexOf(carbons, T.CarbonId));
    }
}

public static void Main(string[] args)
{
    int[] carbonOrder = new[] { 3, 6, 2, 7, 9 };

    List<City> cities = City.OrderByIrregularCarbonId(db.GetCities, carbonOrder).ToList();
}

答案 1 :(得分:3)

创建比较逻辑

private static int CompareCityByMyLogic(City x, City y)
{
  //put your logic here 
  return 0;
}

然后使用它

db.GetCities.Sort(CompareCityByMyLogic);