Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用linq反转对象列表中的对象列表_Vb.net_Asp.net Mvc 3_Linq_Linq To Objects - Fatal编程技术网

Vb.net 使用linq反转对象列表中的对象列表

Vb.net 使用linq反转对象列表中的对象列表,vb.net,asp.net-mvc-3,linq,linq-to-objects,Vb.net,Asp.net Mvc 3,Linq,Linq To Objects,我有一份等级酒店的名单,里面有其他等级房间的名单。现在,当我执行降序排序时,我会按降序对酒店进行排序,但我还必须使用linq对价格上的房间列表进行内部排序。下面是班级结构示意图 class Hotel - property hotelname (string) - property rooms (list of rooms) class rooms - property roomdesc (string) - property roomch

我有一份等级酒店的名单,里面有其他等级房间的名单。现在,当我执行降序排序时,我会按降序对酒店进行排序,但我还必须使用linq对价格上的房间列表进行内部排序。下面是班级结构示意图

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

class rooms
      - property roomdesc (string)
      - property roomcharge (decimal)
现在,我已经以下面的方式应用了降序和升序代码

lstHotels.OrderByDescending(Function(hotel) hotel.Rooms(0).roomcharge).ToList()
这将根据房间费用按降序对酒店进行排序。第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 

可能会有帮助。

根据您想要的结果,您可能只需要

首先,这里是我使用的LINQ表达式:

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)

(但这是未经测试的——它基于已为另一个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; }
}

这样,您就可以枚举匿名类型,其中第一个成员是酒店的名称,第二个成员是按您想要的方式排序的房间的枚举。您可能希望在投影中以
hotel=o
替换
o.Name
来显示整个hotel实例,如您所愿。

您没有明确说明问题。你的代码是否有效?你还谈到在你的标题中颠倒一个列表,但你只谈到在你的问题中排列一个列表。C#答案也受欢迎吗?我对vb.net了解不够,无法表达这一点。以下是要求。。。我需要按降序对酒店以及这些酒店下的房间进行排序。。如下图所示。酒店ABC第一次报价含2间客房:125150第二次报价含2间客房:175200酒店XYZ第一次报价含2间客房:120140第二次报价含2间客房:210220现在,一旦我在desc中对这些报价进行排序,酒店XYZ将显示为第一家酒店,并且我想对该报价中的房间进行排序。我可以按报价排序,但不能按房间排序@黄蜂:欢迎回答。。
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 
             };