实体框架-按照C#中提供的列表的顺序从表中获取记录

本文关键字:列表 顺序 记录 获取 框架 按照 实体 | 更新日期: 2023-09-27 17:58:33

如何从整数列表的同一序列中的表中提取记录?

我有一个list<int>

List<int> reorderNarrowerTermIds = new List<int>();
reorderNarrowerTermIds.Add(2,7,4,9);

现在我想按照上面列表的相同顺序从表中获取记录。

var lstTerm = _context.table.Where(n => reorderNarrowerTermIds.Contains(n.TermId)).ToList();

上面的linq语句给出了2,4,7,9 TermId序列中的记录,但我想要2,7,4,9 TermId序列。

我被困在这里了。

实体框架-按照C#中提供的列表的顺序从表中获取记录

这应该可以做到,按照出现的索引排序:

var lstTerm = _context.table.Where(n => reorderNarrowerTermIds.Contains(n.TermId)).ToList()
                      .OrderBy(x => reorderNarrowerTermIds.IndexOf(x.TermId)).ToList();

因此,reorderNarrowerTermIds中索引0处的项目具有0的顺序因子,并且在结果列表中首先显示。同样适用于1、2等的升序。

仍然不确定您从_context.table 获得的信息是什么样子

List<int> SearchNumbers = new List<int> { 2,7,4,8 };
List<int> numbers = new List<int> { 1,2,3,4,5,6,7,8,9 };
var lstTerm = numbers.Where(n => SearchNumbers.Contains(n)).ToList();

这将显示2,4,7,8

List<int> SearchNumbers = new List<int> { 2,7,4,8 };
List<int> numbers = new List<int> { 1,2,3,4,5,6,7,8,9 };
var lstTerm = SearchNumbers.Where(n => numbers.Contains(n)).ToList();

这将显示2,7,4,8