我有以下两个 ViewStates 1存储所有开始日期,另一个存储特定事件的所有结束日期:
private List<DateTime> SelectedStartDates
{
get
{
if (ViewState["SelectedStartDates"] != null)
return (List<DateTime>)ViewState["SelectedStartDates"];
return new List<DateTime>();
}
set
{
ViewState["SelectedStartDates"] = value;
}
}
private List<DateTime> SelectedEndDates
{
get
{
if (ViewState["SelectedEndDates"] != null)
return (List<DateTime>)ViewState["SelectedEndDates"];
return new List<DateTime>();
}
set
{
ViewState["SelectedEndDates"] = value;
}
}
问题:
我是否可以通过以下方式在这两个ViewStates中存储组合的值列表:
List[0] = first value of Start date
List[1] = first value of End date
List[2] = second value of Start date
List[3] = second value of End date
.
.
.
依此类推,直至 ViewState 中两个列表的最后一个值。
我能想到的另一种方法是以上述方式再次组合 ViewState 返回的通用列表。
另外,我想将重复值保留在组合列表中
有解决办法吗?
答案 0 :(得分:2)
你可以这样做:
List<DateTime> combine = new List<DateTime>();
for (int i = 0; i < SelectedStartDates.Count; i++)
{
combine.Add(SelectedStartDates[i]);
combine.Add(SelectedEndDates[i]);
}
如果两个输入列表是List<string>
类型,并且这些列表中的每个项都有效DateTime
(例如,它由(DateTime).ToString()
函数插入,则可以使用:< / p>
List<string> SelectedStartDates = new System.Collections.Generic.List<string>();
List<string> SelectedEndDates = new System.Collections.Generic.List<string>();
List<DateTime> combine = new List<DateTime>();
for (int i = 0; i < SelectedStartDates.Count; i++)
{
combine.Add(DateTime.Parse(SelectedStartDates[i]));
combine.Add(DateTime.Parse(SelectedEndDates[i]));
}
您不确定字符串是否有效DateTime
格式,您可以使用DateTime.TryParse
。
您可以阅读:
答案 1 :(得分:1)
如果你想像你说的那样,直到两个列表的最小数量,那么你可以使用Zip()方法。即:
SelectedStartDates.Zip( SelectedEndDates, (s, e) => new
{Start = s, End = e});