我有一个int的列表,model.SelectedIngredients在这个例子中,列表包含值[15128, 4593,15046,].我使用此列表作为我的Linq查询中的过滤器,如下所示:
List<INGREDIENT> selectedIngredients = db.INGREDIENT.Where(i => model.SelectedIngredients.Contains(i.IngredientId)).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,这会将IngredientId升序的结果排序为默认值[4593,15046,15128].
我想要的是让selectedIngredients它们以与它们相同的顺序返回model.SelectedIngredients.
我知道我可以在for循环中做到这一点,但我只是想知道我是否有办法在Linq查询中做到这一点?
谢谢
通过使用带有ID的列表索引,您可以很容易地完成此操作.
List<INGREDIENT> selectedIngredients = db.INGREDIENT
.Where(i => model.SelectedIngredients.Contains(i.IngredientId))
.AsEnumerable()
.OrderBy(i => model.SelectedIngredients.IndexOf(i.IngredientId))
.ToList();
Run Code Online (Sandbox Code Playgroud)