我有一个model.SelectedIngredients
的整数列表,在此示例中,列表包含值[15128, 4593,15046,]
。我在Linq查询中使用此列表作为过滤器,如下所示:
List<INGREDIENT> selectedIngredients = db.INGREDIENT.Where(i => model.SelectedIngredients.Contains(i.IngredientId)).ToList();
但是,这会将IngredientId的结果排序为默认值[4593,15046,15128]
。
我希望将selectedIngredients
恢复为与model.SelectedIngredients
中相同的顺序。
我知道我可以在for循环中完成它,但我只是想知道我是否有办法在Linq查询中做到这一点?
由于
答案 0 :(得分:6)
您可以使用带有ID的列表索引来轻松完成此操作。
List<INGREDIENT> selectedIngredients = db.INGREDIENT
.Where(i => model.SelectedIngredients.Contains(i.IngredientId))
.AsEnumerable()
.OrderBy(i => model.SelectedIngredients.IndexOf(i.IngredientId))
.ToList();
答案 1 :(得分:0)
List<INGREDIENT> selectedIngredients = db.INGREDIENT
.Where(i => model.SelectedIngredients.Contains(i.IngredientId))
.orderBy(p=>p.Id).ToList();
这是默认值。首先确定它的排序,然后按顺序排序。