订购和加入linq

时间:2013-07-04 12:33:11

标签: asp.net-mvc linq-to-entities

 AllMovieInfo = from movieInfo in AllMovieInfo
                           from countryMovie in movieInfo.SeenItWantToSeenIt
                           where countryMovie.Status==1
                           select movieInfo;

            var seenitorderby = db.SeenItWantToSeeIt.Where(m => m.Status == 1).GroupBy(m => m.MovieID).Select(g => new  {MovieID =g.Key,count=g.Count()}).OrderBy(o=>o.count);
            List<int> seenItList=seenitorderby.Select(s=>s.MovieID).ToList();
            AllMovieInfo = (from a in AllMovieInfo
                       from s in seenItList
                       where seenItList.Contains(a.MovieID)
                       select a).Distinct();

seenitorderby给出了最常见的电影的所有内容。所以我想加入AllMovieInfo,这是从其他参数过滤的电影信息。 这个查询根据“AllMovieInfo.MovieID”对结果进行排序,这很明显,但是我必须根据来自“看到的人”的id来命令“结果”,例如:看到它的orderby可能需要movieID 2,25,7,14 ,25然后我按照与看见者相同的顺序需要AllMovieInfo。如何根据“seenitorderby”订购“结果”?

1 个答案:

答案 0 :(得分:1)

你能否使用seenitlist作为主要列表并加入movieinfo?我相信(虽然我没有尝试过)他们会按照主要清单的顺序出现。

from s in seenItList
join a in AllMovieInfo on s equals a.MovieId
select a

如果您真的想要将所有linq查询简化为一个,可以将其简化为下一个阅读代码的人。