在LINQ中生成序数

时间:2012-08-11 06:57:03

标签: linq c#-4.0

我有一个包含以下记录的列表:

name:apple
category:fruit

name:choysum
category:vegetable

name:chicken
category: poultry

name: lamb
category: meat

...

我需要按以下类别订购此列表:

vegetable
fruit
poultry
meat..

有人可以帮助我使用LINQ如何实现上述目标。我正在考虑创建一个名为ordinal的另一个属性,并为上述类别标记为1,2,3,4。然后按顺序排序。

1 个答案:

答案 0 :(得分:4)

是的,你可以这样做:

var orderedCategories = new List<string> { "fruit", "vegetable", "poulty", "meat" };
var ordered = list.OrderBy(x => orderedCategories.IndexOf(x.Category))
                  .ToList();

如果您有很多类别,则可能需要使用Dictionary<string, int>(如果您有类别的单独类,则使用Dictionary<Category, int>