我有一份城市名单。每个城市都有一个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]??????)
答案 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)
;