2013-07-04 3 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는 다른 매개 변수의 filterd movieinformation입니다. 이 쿼리는 명백한 "AllMovieInfo.MovieID"에 따라 결과를 정렬하지만, "seenitorderby"라는 ID에 따라 "결과"를 주문해야합니다. 예를 들어 보니 orderby는 movieID 2,25,7, 14,25 AllMovieInfo가 필요합니다. "seenitorderby"에 따라 "result"를 어떻게 주문할 수 있습니까?linq에서 주문 및 가입

답변

1

기본 목록으로 seenitlist를 사용하고 movieinfo에 참여할 수 있습니까? 저는 (비록 시도하지는 않았지만) 그들이 기본 목록의 순서대로 나올 것이라고 믿습니다. 당신이 정말로 코드를 읽어 오는 다음 사람에게 더 분명 할 수있는하려면

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

당신은 아마 하나의 LINQ 쿼리의 모든를 단순화 할 수있다.

+0

AllMovieInfo S는 a.MovieID 동일에

+0

가에 대한 간단한 솔루션은 seenItList 에서의에서 AllMovieInfo.AsEnumerable() – DoctorMick

+0

을 (시도로는 AllMovieInfo에 가입 에 IQueryable에 있으며 IEnumerable을 캐스팅 couldnot 가입 선택) .Distinct(). AsQueryable(); –