基于其他整数列表控制LINQ查询顺序

naq*_*lha 1 c# linq

我正在进行LINQ查询,我从表视频中选择视频信息.查询仅选择以下列表中存在ID的视频:

List<int> results; //Has some values
var query = from l in dataContext.Videos
                 where results.Contains(l.ID)
                 select l;
Run Code Online (Sandbox Code Playgroud)

现在如何在查询中订购项目(视频信息),使其ID与List结果的顺序相同?

我可以这样做:

List<int> results; //Has some values
var query = from k in results
            from l in dataContext.Videos
            where k==l.ID
            select l;
Run Code Online (Sandbox Code Playgroud)

但这很慢,我需要更快的东西.

Inf*_*ies 6

使用a join,速度要快得多

var orderedByIDList = from k in results
join l in dataContext.Videos
on k equals l.Id
select l;
Run Code Online (Sandbox Code Playgroud)

由于@MarcinJuraszek和@Phil的评论加入/编辑,谢谢你们.

基本上先抓住你的数据然后排序,这就是我得到的:

var myList = (from l in dataContext.Videos
where results.Contains(l.ID)
select l).ToList(); //grab data and resolve to list or array

var orderedByIDList = from k in results
join l in myList
on k equals l.Id
select l; //result type IEnumerable<Video>
Run Code Online (Sandbox Code Playgroud)