linq查询结果不符合顺序

问题描述 投票:1回答:1

我有一个整数ID的列表,比如说MyIdList = {3, 7, 4, 1, 9, 2},它是我表中ID的子集。这个列表是根据我的条件进行排序的。我有DbContext和Dbset变量来查询我的postgres数据库表,比如说MyTable。MyTable有很多的列和行,我使用DbContext和Dbset变量来查询我的postgres数据库表,比如说MyTable。

当我发出下面的查询时,我得到了正确的结果(6行),但是排序的顺序和上面的顺序列表不一样。

我的查询是

List<MyTable> myresult = await dbset.Where(p => MyIdList.Contains(p.Id)).ToListAsync();

我的要求是用一个linq查询从这个表中以MyIdList存在的相同顺序获得对象的myresult列表。

注意:只有告诉我顺序的数据在列表中,而不是存在于这个表或任何表中。

linq where-clause dbcontext
1个回答
0
投票

这是一个重复的 这个问题。

你只需要在这个问题上添加一个 OrderBy 扩展,按 指数 你的 MyIdList 列表。试试这个。

List<MyTable> myresult = await dbset
    .Where(p => MyIdList.Contains(p.Id))
    .OrderBy(p => MyIdList.IndexOf(p.Id)     
    .ToListAsync();
© www.soinside.com 2019 - 2024. All rights reserved.