在C#中按提供列表的顺序从表中获取记录

时间:2016-07-26 07:07:15

标签: c# entity-framework linq list

如何从整数列表的相同序列中获取表中的记录?

我有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序列。

我被困在这里。

2 个答案:

答案 0 :(得分:3)

这应该是诀窍,按出现索引排序:

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

因此,reorderNarrowerTermIds中索引0处的项目的订单因子为0,并在结果列表中首先显示。同样适用于1,2等的升序......

答案 1 :(得分:0)

仍然不确定您从_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