2017-05-26 86 views
1

這是我從js編寫的代碼。我想用C#設置相同的東西,但不知道如何。我嘗試過使用數組,但是信息應該很容易更新,而不必更改代碼的其餘部分。如何將js中的數組轉換爲C#中的數組?

例如,我可以從夏季價格:hotell[0].list[0].price_s.text

有沒有辦法做到這一點在C#中(視覺工作室),在那裏你可以把信息像這樣的一個數組?內Liste

var hotell = []; 

hotell[0] = { 
    city: "New York", 
    liste: [ 
     {name: "Aurora", price_s: 590, price_v: 690}, 
     {name: "Downtown", price_s: 660, price_v: 750}, 
     {name: "City Hall", price_s: 450, price_v: 530}, 
     ] 
}; 
+1

你必須爲'Hotel'和'liste'類定義類,然後初始化它們。 – degant

+0

嘗試谷歌類的數組 - 我發現這個鏈接有很多:http:// www。 functionx.com/csharp/arrays/Lesson03.htm – PaulF

回答

0

創建一個名爲Hotel的Model類,它具有兩個名爲「city」和「liste」的屬性。 「清單當然」不過是List<HotelDetails>

public class HotelDetails 
{ 
    public string name { get; set; } 
    public int price_s { get; set; } 
    public int price_v { get; set; } 
} 

public class Hotel 
{ 
    public string city { get; set; } 
    public List<HotelDetails> liste { get; set; } 
} 

接下來你需要你的數組轉換成JSON對象,使一個AJAX調用您的webmethod(如果asp.net web表單應用程序)或請調用您的控制器動作(如果asp.net MVC應用程序)並將您的json對象作爲參數傳遞。

之後,你可以用你的酒店類

0

類兩種Hotel和項目將是更好的實現,就像提到@degant。

但是,您可以有一個tuple<string, int, int>的列表。

var hotel1 = new List<Tuple<string, int, int>> 
{ 
     new Tuple<string, int, int>("Aurora", 590, 690), 
     new Tuple<string, int, int>("Downtown", 660, 750), 
     new Tuple<string, int, int>("City Hall", 450, 530) 
}; 

然後,您可以存儲所有的酒店在字典:

var allhotels = new Dictionary<string, List<Tuple<string, int, int>>> 
    { 
     {"Hotel1", storage} 
    }; 

或者:

var allhotels = new Dictionary<string, List<Tuple<string, int, int>>>(); 
    allhotels.Add("Hotel1", storage); 

但你可以看到它變得複雜起來相當快。

0

最乾淨的可能是創建一個代表您的數據的類。

class Hotel { string name; int price_s; price_v;} 

然後,你既可以創建一個字典,其中的關鍵是城市的名稱和值是酒店的列表:

Dictionary<string, List<Hotel>> hotels; 

或者你可以創建另一個類的:

class HotelsPerCity{ string city; List<Hotel> hotels; } 

而只保留HotelsPerCity在一個列表:

List<HotelsPerCity> hotels; 
0

技術上發揮上講,你可以使用匿名類對於這一點,做類似下面

var hotell = new []{ 
    new {city = "New York", 
    liste= new[]{ 
     new{name= "Aurora", price_s = 590, price_v = 690}, 
     new {name= "Downtown", price_s = 660, price_v = 750}, 
     new {name= "City Hall", price_s= 450, price_v= 530}, 
     } 
}}; 

Console.WriteLine(hotell[0].liste[1]); 

這裏的問題是,var關鍵字推測出的編譯器指定的類。也就是說,匿名類是針對包含字段string name,int price_sint price_v的類型構建的,也是實際酒店的匿名類。

匿名類意味着短命,並且唯一能夠從方法返回對象hotell的方法是將對象作爲一個對象,以致於必須稍後將其轉換爲匿名類型。因爲它是匿名的,所以很難:)。你或許也可以跟動態一起走,但這些都是緩慢的反射基礎。

IE:你是強類型語言,最好是聲明你的類。

擁有酒店及套房班

class Room { 
    public string name {get;set;} 
    public int price_s {get;set;} 
    public int price_v {get;set;} 
} 

class Hotel { 
    public string city {get;set;} 
    public List<Room> liste {get;set;} 
} 

,你可以得到相當簡單的初始化沒有什麼不同(但也不能等同於JS):

var hotel = new Hotel[]{ 
    new Hotel{city = "New York", 
    liste= new List<Room>{ 
     new Room{name= "Aurora", price_s = 590, price_v = 690}, 
     new Room{name= "Downtown", price_s = 660, price_v = 750}, 
     new Room{name= "City Hall", price_s= 450, price_v= 530}, 
     } 
}}; 

這可能與周圍的相應類型的傳遞。請注意,這些屬性通常是C#的大寫字母。

相關問題