0

LINQ 쿼리가 제대로 나는 다음과 같은 수행 할LINQ 쿼리는

작동하지 제대로 작동하지, 나는 마지막의 목록을 얻으려면 특정 조건

에 방문자 테이블에서 방문자 기록에 액세스하려면 5 장소를 방문한 별개의 방문자

결과를 얻기 위해 다음 쿼리를 사용하고 있지만 distinct() 문제가 발생하면 distinct()가 기존 순서를 파괴합니다.

var result = ObjPlace.visitorlist 
.where(visitpalce => visitplace.name == Placename) 
.OrderByDescending(visitor => visitor.visitdate) 
.Select(x => x.visitorID) 
.Distinct() 
.take(5); 

난()이 완벽하게 작동 별개의 제거 ...

어떻게 동일을 달성 할 수 있습니까?

var result = ObjPlace.visitorlist 
       .Where(visitpalce => visitplace.name == Placename) 
       .Distinct() 
       .OrderByDescending(visitor => visitor.visitdate) 
       .Select(x => x.visitorID) 
       .Take(5); 
+0

어떤 서버를 사용하고 있습니까? – akatakritos

+0

SQL 추적을 실행하고 서버로 전달되는 SQL 문을 확인할 수 있습니까? – akatakritos

+0

IIS7을 사용 중입니다 ... –

답변

2

이렇게하면 마지막 방문에 의해 보전 된 개체의 고유 목록이 반환됩니다. 그럼 그냥 그 중 상위 5 개를 가지고 :

query.Take(5) 

을 한 방문자가 상위 5 레코드를 여러 방문을 미칠 수 있기 때문에 당신은 여기 그룹화 필요가 없다. 따라서, 먼저 placename으로 목록을 필터링하고 있습니다. 그런 다음 방문자별로 모든 방문을 그룹화하십시오. 나는. 당신은 방문 그룹을 가지고 있습니다. 각 그룹에서 방문자의 마지막 방문 시간을 정의한 다음 그룹의 첫 번째 방문 엔티티를 선택합니다.이 엔티티는 해당 방문자의 마지막 방문 날짜와 동일한 시간을가집니다.

+0

lastVisit을 허용했기 때문에 'orderby lastVisit descending'이 필요하십니까? – Turbot

+0

^1 –

0

당신은 순서를 변경하려고 할 수 있는가?

개체가 IEquatable을 구현하는 경우 모든 필드가 비교됩니다. 즉, 두 개체에서 날짜가 다르면 별개이지만 다른 필드가 다른 경우 개체가 다르게 간주됩니다.

입력 데이터 샘플, 출력 및 예상 출력을 게시 할 수 있습니까?

+0

별개의 데이터를 제공하지 않습니다. ( –

0

당신이 얻을하려고하는 별개의 데이터가 무엇인가