首页 > 解决方案 > 如何将此 foreach 转换为 LINQ

问题描述

这段代码与 LINQ 有何相似之处?看起来很简单,但真的不知道怎么做

private IRoom FindRoom(List<IHotel> hotels,IRoom selectedRoom)
        {
            foreach(var hotel in hotels)
            {
                foreach(var room in hotel.Rooms)
                {
                    if (selectedRoom.Equals(room))
                        return room;
                }
            }
            return null;
        }

标签: c#linq

解决方案


    private IRoom FindRoom(List<IHotel> hotels,IRoom selectedRoom)
    {
        var hotel = hotels.SingleOrDefault(x => x.Rooms.Any(r => r == selectedRoom));
        if (hotel != null)
        {
          return hotel.Rooms.Single(x => x == selectedRoom);
        }
        else
        {
          return null;
         }
    }

推荐阅读