2014-03-14 102 views
0

我有一個數據合同定義如下:存儲陣列中的合同數據

[DataContract] 
public class DemoSearchList : ReturnValuesBase 
{ 
    [DataMember] 
    public string SessionId { get; set; } 

    [DataMember] 
    public string[] StartDate { get; set; } 

    [DataMember] 
    public string[] EndDate { get; set; } 

    [DataMember] 
    public string ProductID { get; set; } 
} 

爲u可以觀察起始日期和結束日期是字符串的數組。 我想發送這些響應數組。

for (int i = 0; i < DS.Tables[0].Rows.Count; i++) 
{ 
    DemoSearchList.StartDate[i] = Convert.ToString(DS.Tables[0].Rows[i][0]); 
    DemoSearchList.EndDate[i] = Convert.ToString(DS.Tables[0].Rows[i][1]); 
} 

DS是一個數據集。 但我得到一個錯誤作爲索引超出界限。任何人都可以請幫助,如果有任何額外的需要聲明和使用,以實現這一點,也請打電話給我

+0

你不能聲明具有無限或動態長度的數組。首選列表或ArrayList ,這樣可以更方便地添加或刪除,如果需要,您仍然可以將其轉換爲數組。 – Dhanasekar

回答

1

這意味着你的數組有沒有正確的大小或尚未初始化。您需要做到這一點您的for循環:

DemoSearchList.StartDate = new string[DS.Tables[0].Rows.Count]; 
DemoSearchList.EndDate = new string[DS.Tables[0].Rows.Count]; 

但我寧願做而不是數組列表(如果你不需要每個值的指數):

[DataContract] 
public class DemoSearchList : ReturnValuesBase 
{ 
    public DemoSearchList() 
    { 
     this.StartDate = new List<string>(); 
     this.EndDate = new List<string>(); 
    } 

    [DataMember] 
    public List<string> StartDate { get; set; } 

    [DataMember] 
    public List<string> EndDate { get; set; } 
} 

那麼你的for循環可能看起來像這樣:

for (int i = 0; i < DS.Tables[0].Rows.Count; i++) 
{ 
    DemoSearchList.StartDate.Add(Convert.ToString(DS.Tables[0].Rows[i][0])); 
    DemoSearchList.EndDate.Add(Convert.ToString(DS.Tables[0].Rows[i][1])); 
} 
+0

非常感謝...這對我來說很好... – Nikki

0

對於使用Array他們length should be defined

StartDate = new String[10]; //can use data row count here 
EndDate = new String[10]; //can use data row count here 

,如果你想使用objects of dynamic length然後用LIST代替

或將其更改爲

[DataMember] 
public List<String> StartDate { get; set; } 

[DataMember] 
public List<String> EndDate { get; set; }