Вы можете сделать что-то вроде этого:
frmltnIngredientsList.OrderBy(item =>
item.Name == "Protein" ? 1 :
item.Name == "oil" ? 2 :
item.Name == "Fibre" ? 3 :
item.Name == "Ash" ? 4 :
5);
Звонок OrderBy
даст IOrderedEnumerable<Ingredient>
. Таким образом, вы должны назначить, что переменный,
var orderedList = frmltnIngredientsList.OrderBy(item => ...);
... или позвонить ToList()
, чтобы иметь возможность назначить его в переменную List<Ingredient>
типа:
frmltnIngredientsList = frmltnIngredientsList.OrderBy(item => ...).ToList();
Это, конечно, может быть прибиралось немного. Либо вы могли бы иметь SortOrder
собственности на вашем Ingredient
списке и просто запустить .OrderBy(x => x.SortOrder)
, или вы могли бы по крайней мере переместить логику из виду:
public static class IngredientExtensions
{
public static int GetSortNumber(this Ingredient item) {
return item.Name == "Protein" ? 1 :
item.Name == "oil" ? 2 :
item.Name == "Fibre" ? 3 :
item.Name == "Ash" ? 4 :
5;
}
}
...
var orderedList = frmltnIngredientsList.OrderBy(item => item.GetSortNumber());
Вы готовите с пеплом ?! Это ново для меня! :) – Benjol