2014-11-03 3 views
0

내 하위 카테고리에 따라 모든 항목을 나열하고 싶습니다. 그래서 어떤 카테고리 나 하위 카테고리를 선택하지 않고로드 홈페이지에 항목 목록을 표시하고 싶습니다.표에서 첫 번째 ID를 선택하십시오.

항목 목록을 반환하는 쿼리를 만들었지 만 수동으로 subCategoryId를 배치했습니다.

int userId = WebSecurity.GetUserId(User.Identity.Name); 

    var preQuery = (from sub in dc.SubCategory 
        join c in dc.Category on sub.SubCategoryId equals c.Id 
        join u in dc.User on c.UserId equals u.UserId 
        where u.UserId == userId 
        select sub.SubCategoryId).Take(1).FirstOrDefault(); 

     var query = (from e in dc.Entry 
        join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId 
        join cat in dc.Category on sub.CategoryId equals cat.Id 
        join u in dc.User on cat.UserId equals u.UserId 
        where ((u.UserId == userId) && (cat.UserId == userId) 
         && (sub.CategoryId == cat.Id) && (e.SubCategoryId == preQuery)) 
        select e).ToList(); 

     return View(query); 

그래서 내 요점은 내가 대신 수동 6의 ID를 쓰는 원하는 하위 범주 ID의 목록을 가지고 그것에서 첫 번째 ID를 선택하려는 것입니다 : 여기

는 쿼리입니다. 나는 prequery를 만들었지 만 여전히 필요한 결과는 아녔습니다. 내가 뭘 잘못하고있는 건가요?

+0

어떤 이유에서든 전나무 ID를 선택하는 이유는 무엇입니까? 아마 이것은 가장 빠른 옵션 일 것입니다 – Uriil

+0

나는 prequery를 만들었지 만 여전히 필요한 결과는 아닙니다. 제안 내가 잘못하고있는 것? – McKeymayker

+0

사용해보기 Let let Let http://stackoverflow.com/questions/5298339/linq-with-subquery-with-let –

답변

1

나는 내 질문에 대한 해결책을 얻을 수 있었기 때문에 해결책을 게시하고 있습니다. 누구나 솔루션을 최적화 할 제안이 있으면 공유 할 수 있습니다.

int userId = WebSecurity.GetUserId(User.Identity.Name); 

     var preQuery = (from e in dc.Entry 
        join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId 
        join cat in dc.Category on sub.CategoryId equals cat.Id 
        join u in dc.User on cat.UserId equals u.UserId 
        where u.UserId == userId 
        select e.SubCategoryId).Take(1); 

     var query = (from e in dc.Entry 
        join sub in dc.SubCategory on e.SubCategoryId equals sub.SubCategoryId 
        join cat in dc.Category on sub.CategoryId equals cat.Id 
        join u in dc.User on cat.UserId equals u.UserId 
        where ((u.UserId == userId) && (cat.UserId == userId) 
         && (sub.CategoryId == cat.Id) && (e.SubCategoryId == preQuery.FirstOrDefault())) 
        select e).ToList(); 

     return View(query); 
관련 문제