2010-08-19 5 views
0

intHi,LINQ to SQL, 주어진 ID에 대한 가장 최근 레코드 얻기

LINQ에 새로운 기능이 있습니다.

등급 테이블이 있습니다.
사용자가 엔터티에 대한 등급 집합을 추가합니다. 사용자 당 엔터티에 대해 둘 이상의 평가 집합이있을 수 있습니다.

예를 들어, 엔티티가 자동차라고 가정 해 보겠습니다. 자동차는 외모와 성능에 따라 등급이 매겨집니다. 그리고 사용자는 주어진 자동차의 외관과 성능을 두 번 이상 평가할 수 있습니다. 그래서 내 표는 다음과 같은 형태합니다 (등급 필드가 ID 열가 아니라 하나의 규모에 int이며 - 10) : 이제

ReviewID  UserID  EntityID  CatID  Rating Body    DateSubmitted 
1   3   6   1   7   "drives great"  8/01/2010 02:36:28 PM 
2   3   6   2   8   "looks great"  8/01/2010 02:36:28 PM 
3   3   6   1   2   "broke down"  8/18/2010 11:39:58 PM 
4   3   6   2   1   "paint flaked off" 8/18/2010 11:39:58 PM 

, 나는이 사용자 ID를 제공하는 도우미 방법이 있고 EntityID와 나는 가장 최근의 등급 (등급 카테고리를 포함하는 ViewModel)을 반환하려고합니다.

public static IQueryable<RatingViewModel> GetRatingViewModel(int EntityID, int UserID) 
    { 
     DB _db = new DB(); 

     var a = 

      from rating in _db.Ratings 
      join ratingCat in _db.RatingCategories 
       on rating.RatingCategoryID equals ratingCat.RatingCategoryID 
      where rating.UserID == UserID 
       && rating.EntityID == EntityID 
      select new RatingViewModel 
      { 
       Rater = rating.User, 
       RaterRating = rating, 
       RatingCategory = ratingCat 

      }; 

     return a; 
    } 

"여기서"나 "로 그룹"또는 "에 의해 순서"어떤 종류 만 주어진 사용자 ID 및에는 EntityID에 대한 평가의 가장 최근의 세트를 잡아 내가 추가해야합니까?

감사합니다.

답변

0

DateSubmitted으로 메소드를 반품 한 다음 원하는 항목 수만큼 주문하십시오.

var a = from rating in _db.Ratings 
     join ratingCat in _db.RatingCategories 
      on rating.RatingCategoryID equals ratingCat.RatingCategoryID 
     where rating.UserID == UserID 
      && rating.EntityID == EntityID 
     orderby rating.DateSubmitted descending 

     select new RatingViewModel 
     { 
      Rater = rating.User, 
      RaterRating = rating, 
      RatingCategory = ratingCat 

     } 
     .Take(10); 
+0

이 그렇다고, 작동합니다. 작성한대로 .Take (10)을 추가하면 내보기 모델에 'Take'에 대한 정의가 없다는 오류가 발생합니다. 그러나 나는 '.Take (10)'을 뺀 다음 var b = a.Take (10);를 쓸 수 있습니다. 그리고 그것은 일을 끝내게됩니다. – johnnycakes

0
.OrderByDescending(a => a.DateSubmitted).FirstOrDefault()