2016-09-24 53 views
0

我想序列化這個類,將顯示在XML文檔中。序列化到XML文檔

<InventoryType> 
    <Date>20160925</Date> 
    <HotelId>123</HotelId> 
    <RoomType>KB</RoomType> 
    <Quantity>5</Quantity> 
</InventoryType> 
<InventoryType> 
    <Date>20160901</Date> 
    <HotelId>123</HotelId> 
    <RoomType>QB</RoomType> 
    <Quantity>3</Quantity> 
</InventoryType> 

我有一個列表,我想遍歷它,並插入3個日期。像上面一樣。但我不知道如何去做。我知道我需要一個forloop的日期時間。但我是否需要另一個內部for循環列表以及?

public void CreateInvenList() 
{ 
    Random rnd = new Random(); 
    int num = rnd.Next(1, 10); 
    DateTime end = new DateTime(2016,09,28); 
    DateTime start = new DateTime(2016, 09, 25); 

    List<InventoryType> Inventoryttype = new List<InventoryType>(); 
    Inventoryttype.Add(new InventoryType(start, "123", "KB", num)); 
    Inventoryttype.Add(new InventoryType(start, "124", "qB", num)); 

    for (DateTime date = start; date < end; date = date.AddDays(1)) 
    { 
     for (??) 
     { 
      // what goes in here? 
     } 
    } 

    serial = new XmlSerializer(Inventoryttype.GetType()); 
    sw = new StreamWriter(Inventory_Filename); 
    serial.Serialize(sw, Inventoryttype); 
    sw.Close(); 
} 
+0

for(var inventoryttype)?我並沒有真正明白你想要做什麼。如果你想在列表中的所有對象中添加所有日期而不是它。 – TigOldBitties

回答

0

沒有你的每一天

for (DateTime date = start; date < end; date = date.AddDays(1)) 
{ 
    num = rnd.Next(); 
    Inventoryttype.Add(new InventoryType(date, "123", "KB", num)); 
    Inventoryttype.Add(new InventoryType(date, "124", "qB", num)); 
} 

,如果你想添加只有那些房間/酒店類型爲給定的日子,將工作分配一個值,你並不需要另一個循環。但是,如果您有一個帶有酒店和客房的數據源,那麼您需要添加一個內部循環來更改酒店,如果每個酒店的房間類型發生更改,那麼您應該爲房間添加另一個內部循環。

如果你有多個酒店一個數據源,但是必須在所有的酒店「KB」和「QB」作爲共同的客房類型,你的代碼應該是這樣的:

for (DateTime date = start; date < end; date = date.AddDays(1)) 
{ 
    foreach (var hotel in hotels) 
    { 
     num = rnd.Next(); 
     Inventoryttype.Add(new InventoryType(date, hotel.id, "KB", num)); 
     Inventoryttype.Add(new InventoryType(date, hotel.id, "QB", num)); 
    ) 
} 

而在情況下,你將不得不每個酒店的具體房間類型和房間類型,您可以擁有的房間數量:

for (DateTime date = start; date < end; date = date.AddDays(1)) 
{ 
    foreach (var hotel in hotels) 
    { 
     foreach (var roomType in hotels.roomTypes) 
     { 
      num = rnd.Next(); 
      Inventoryttype.Add(new InventoryType(date, hotel.id, roomType.id, num)); 
     } 
    ) 
} 

希望它有幫助。

+0

是的,這有助於很多。我現在遇到的問題是Random rnd = new Random();給了我所有人的相同數字。這是'Inventoryttype.Add(新的InventoryType(日期,hotel.id,roomType.id,** num **))中的數字;' – user6875449

+0

如果你想隨機改變所有的時間,你應該把它放在相同的循環作爲您添加inventorytype對象的循環。更新我的回覆。 – IamNguele

+0

Ah k。得到它了。它現在正在改變。感謝您的幫助 – user6875449