Click here to Skip to main content
15,887,337 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Quote:
Hi I have this scenario,
These are my tables
1. Room  
   =====
   RoomId    RoomName
   1         Iphone
   2         Samsung
   3         Nokia

2. RoomImage
   =========
   RoomImageId RoomId NormalImage
   1           1       iphone1.jpg
   2           1       iphone2.jpg
   3           1       iphone1.jpg
   4           2       Samsung1.jpg
   4           2       Samsung2.jpg
   4           2       Samsung3.jpg


And this is my code :
public static List<roominfo> LoadAllRoomDetails()
        {
            try
            {
                
                List<roominfo> lstRooms = RoomInfo.GetRooms();
                List<roomimage> lstRoomImages = new List<roomimage>();
                
                foreach (var items in lstRooms)
                {
                    RoomInfo _RoomInfo = new RoomInfo();                
                    _RoomInfo.RoomTitle = items.RoomTitle;
                    _RoomInfo.RoomName = items.RoomName;
                    _RoomInfo.RoomPrice = items.RoomPrice;
                    _RoomInfo.RoomId = items.RoomId;
                    _RoomInfo.RoomDescription = items.RoomDescription;

                    RoomImage _RoomImage = new RoomImage();
                    _RoomImage.RoomId = _RoomInfo.RoomId;
                    var LstOfImages = _RoomImage.GetRoomImagesByRoomId();

                    
                    foreach (var images in LstOfImages)
                    {
                        _RoomImage.RoomImageId = images.RoomImageId; 
                        _RoomImage.NormalImage = images.NormalImage;
                        _RoomImage.LSTImages = LstOfImages;
                        lstRoomImages.Add(_RoomImage);
                    }
                    
                    
                    lstRooms.Add(_RoomInfo);
                    
                }
                
                return lstRooms;
            }
            catch (Exception)
            {

                throw;
            }

And this is the code inside the method GetRoomImagesByRoomId();
C#
public IEnumerable<roomimage> GetRoomImagesByRoomId()
        {
            using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.GetConnection(), "[GetRoomImagesByRoomId]", RoomId))
            {
                if (sdr.HasRows)
                {
                    while (sdr.Read())
                    {
                        yield return new RoomImage
                        {
                            RoomId = Convert.ToInt32(sdr["RoomId"]),
                            RoomImageId = Convert.ToInt32(sdr["RoomImageId"]),
                            ThumbnailImage = Convert.ToString(sdr["ThumbnailImage"]),
                            NormalImage = Convert.ToString(sdr["NormalImage"])
                        };
                    }
                }
            }
        }


Now am trying to use generic list to get the RoomImages related to it RoomId.
So the problem is on that line:
RoomImage _RoomImage = new RoomImage();
means everytime the loop is creating a new object on that line means it is not storing the list of the previous Images, it is storing only the current one in the loop.
Please could you help how can I resolve that issue?

Posted
Updated 13-Oct-14 4:44am
v3
Comments
BillWoodruff 13-Oct-14 13:27pm    
I don't have time to study your code, but I have one immediate response: why not build a Dictionary<roominfo,List<lstRoomImages>> ?

1 solution

C#
  public IEnumerable<roomimage> GetRoomImagesByRoomId()
        {
            using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.GetConnection(), "[GetRoomImagesByRoomId]", RoomId))
            {
                IEnumerable<roomimage> lstRoomImage = new IEnumerable<roomimage>();
                RoomImage objRoomImage = new RoomImage();
                if (sdr.HasRows)
                {
                    while (sdr.Read())
                    {
                        yield return new RoomImage
                        {
                            objRoomImage.RoomId = Convert.ToInt32(sdr["RoomId"]),
                            objRoomImage. RoomImageId = Convert.ToInt32(sdr["RoomImageId"]),
                            objRoomImage. ThumbnailImage = Convert.ToString(sdr["ThumbnailImage"]),
                            objRoomImage.NormalImage = Convert.ToString(sdr["NormalImage"])
                            lstRoomImage.Add(objRoomImage);
                        };
                    }
                }
            }

            retrun lstRoomImage;
        }
</roomimage></roomimage></roomimage>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900