2013-07-04 65 views
0
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给出了所有最常见的电影ID。所以我想加入AllMovieInfo,它是从其他参数过滤掉电影信息。 这个查询按照“AllMovieInfo.MovieID”排序,这是显而易见的,但是我必须根据来到的ID来命令“结果”是“seesitorderby”,例如:看到它可能需要movieID 2,25,7, 14,25然后我需要AllMovieInfo按照与查看者相同的顺序。如何根据“seesitorderby”命令“结果”?订购并加入linq

回答

1

你不能使用seenitlist作为主要列表并加入到movieinfo吗?我相信(尽管我没有尝试过)他们会按主要列表的顺序出来。

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

你也许可以简化所有的LINQ查询的一个,如果你真的想这可能使其更明显,涉及到谁阅读代码的下一个人。

+0

AllMovieInfo是IQueryable的并加入couldnot投射到的IEnumerable

+0

作为一个简单的解决方案是,在seenItList 尝试AllMovieInfo.AsEnumerable() – DoctorMick

+0

(从s中AllMovieInfo上s等于a.MovieID加入 选择a).Distinct()。AsQueryable(); –