我有一个 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 查询中做到这一点?

谢谢

最佳答案

您可以通过使用带有 id 的列表索引轻松完成此操作。

List<INGREDIENT> selectedIngredients = db.INGREDIENT
                         .Where(i => model.SelectedIngredients.Contains(i.IngredientId))
                         .AsEnumerable()
                         .OrderBy(i => model.SelectedIngredients.IndexOf(i.IngredientId))
                         .ToList();

关于c# - Linq 按包含列表排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35627018/

10-12 15:15