我有一个整数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列表。
注意:只有告诉我顺序的数据在列表中,而不是存在于这个表或任何表中。
这是一个重复的 这个问题。
你只需要在这个问题上添加一个 OrderBy
扩展,按 指数 你的 MyIdList
列表。试试这个。
List<MyTable> myresult = await dbset
.Where(p => MyIdList.Contains(p.Id))
.OrderBy(p => MyIdList.IndexOf(p.Id)
.ToListAsync();