繁体   English   中英

将数组存储在数据协定中

[英]store array in data contract

我有一个数据合同,定义如下:

[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是数据集。 但是我得到一个错误,因为索引超出范围。 任何人都可以请帮助,如果需要声明并使用其他任何电话来实现这一目标,请给我打电话

这意味着您的数组大小不正确或尚未初始化。 您需要在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]));
}

对于使用Array length should be definedlength 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; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM