2012-09-21 5 views
0

다른 클래스 룸 목록을 내부적으로 구성하는 클래스 유형 호텔 목록이 있습니다. 이제 내림차순 정렬을 수행 할 때 내림차순으로 호텔을 정렬하지만 내부적으로 linq를 사용하여 가격에 객실 목록을 정렬해야합니다. 아래는 클래스 구조의 스케치입니다linq을 사용하여 객체 목록 안의 객체 목록 역방향

class Hotel 
     - property hotelname (string) 
     - property rooms (list of rooms) 

class rooms 
     - property roomdesc (string) 
     - property roomcharge (decimal) 

저는 아래의 방식으로 지금 내림차순으로 오름차순 코드를 적용했습니다.

이렇게하면 객실 요금에 따라 내림차순으로 호텔이 정렬됩니다. 0 번째 인덱스 룸은 항상 최소 비용으로 제공됩니다. 또한 내림차순 정렬 또한 방 목록을 정렬 할 싶어요. 사전에

감사합니다.

+1

귀하는 명확하게 질문을 진술하지 않았습니다. 코드가 작동합니까? 또한 제목에서 목록을 뒤집는 것에 대해 이야기하지만 질문에서 목록을 주문하는 것에 대해서만 이야기합니다. –

+0

C# 응답도 환영할만한가요? 이것을 표현하기에 충분한 vb.net을 모른다. – Wasp

+0

요구 사항은 다음과 같습니다. 호텔 및 내 호텔의 객실 내림차순으로 정렬을 수행해야합니다. 예 : 아래. 호텔 ABC 2 개 객실 1 제공 : 2 개 객실 125,150 2 차 모집 : 2 개 객실 120,140 2 차 모집 : 2 개 객실 175,200 호텔 XYZ 1 행사 지금 210220 한 번 내가 이러한 서비스를 분류 desc 호텔 XYZ는 첫 번째 호텔로 표시되며 그 제안에 객실을 정렬하고 싶습니다. 나는 제안에 관해 정리를 할 수 있었다. 그러나 방에 관해서는 할 수 없었다. @Wasp : C# 답변을 환영합니다. – VaibhavD

답변

0

질문을 올바르게 이해하면 호텔의 방 순서를 뒤집을 수 있습니다. 그렇다면 이것을 시도 할 수 있습니다.

Dim hotelList as List(Of Hotel) = lstHotels.OrderByDescending(Function(hotel) hotel.Rooms(0).roomcharge).ToList() 

hotelList.ForEach(AddressOf OrderRooms) 


Sub OrderRooms(ByVal hotel As Hotel) 
     hotel.Rooms.Reverse() 
End Sub 

도와 주시면 감사하겠습니다.

0

가 방금 .ThenBy을 필요로 수, 무엇을 원하는 및 결과 따라 :

From hotel In lstHotels 
    From room In hotel.Rooms 
    Order By hotel.Room(0).roomcharge Descending, 
      room.roomcharge Descending  

나는이 얻을 LINQpad 사용 :

lstHotels.SelectMany(Function(hotel) hotel.Rooms, _ 
      Function(hotel,room) New With{.hotel=hotel, .room=room}) _ 
    .OrderByDescending(Function(hr) hr.hotel.Rooms(0).roomcharge) _ 
    .ThenByDescending(Function(hr) hr.room.roomcharge) 
을 첫째

, 여기 내가 사용하고있어 LINQ의 표현이다

(하지만이 코드는 테스트되지 않았습니다. 이미 다른 SO 응답 용으로 코딩 된 약간 다른 데이터 세트의 AsQueryable 출력을 기반으로합니다).

public class Hotel 
{ 
    public string Name { get; set; } 
    public List<Room> Rooms { get; set; } // List<Room> to keep it simple, 
              // you could/should expose it 
              // in a better way 
} 

public class Room 
{ 
    public string Description { get; set; } 
    public decimal Charge { get; set; } 
} 

내가 올바른 접근이 Rooms 멤버를 정렬 할 수 있지만, 익명 형식을 통해 새로운 데이터 구조에서 원하는 종류의 돌출 된 LINQ 쿼리를 수행 할 수없는 것이라고 생각 :

0

당신이이 수업을 가정 :

var report = from o in offers 
      orderby o.Name descending 
      select new 
      { 
       o.Name, 
       Rooms = from r in o.Rooms 
         orderby r.Charge 
         select r 
      }; 

첫 번째 회원이 호텔의 이름을 익명 형식의리스트를 가지고 이런 식으로, 객실의 두 번째 열거 당신이 원하는 방식으로 정렬. 원하는대로 전체 프로젝션 인스턴스 o.NameHotel = o으로 노출시키고 싶을 수도 있습니다.