我有一份成分列表,其中包含成分名称和相应的值.我想根据预先定义的顺序排序.
List<Ingredients> frmltnIngredientsList = new List<Ingredients>
Run Code Online (Sandbox Code Playgroud)
该列表最多可包含10条记录.前四个记录应按以下顺序排列:
其余的可以按任何顺序排列
Dav*_*und 13
你可以这样做:
frmltnIngredientsList.OrderBy(item =>
item.Name == "Protein" ? 1 :
item.Name == "oil" ? 2 :
item.Name == "Fibre" ? 3 :
item.Name == "Ash" ? 4 :
5);
Run Code Online (Sandbox Code Playgroud)
的OrderBy通话将产生IOrderedEnumerable<Ingredient>.所以你需要将它分配给变量,
var orderedList = frmltnIngredientsList.OrderBy(item => ...);
Run Code Online (Sandbox Code Playgroud)
...或者调用ToList()以将其分配给您的List<Ingredient>类型变量:
frmltnIngredientsList = frmltnIngredientsList.OrderBy(item => ...).ToList();
Run Code Online (Sandbox Code Playgroud)
它当然可以整理一下.您可以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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |