我的数据合同定义如下:
[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; }
}
因为你可以观察到StartDate和Enddate是字符串数组。 我想发送一系列回复。
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 :(得分: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]));
}
答案 1 :(得分: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; }