我使用的是C#和ASP.NET 3.5。基本上,我从数据集中检索一列数据并将其放入列表中,如下所示:
List<String> dates = new List<String>();
foreach (DataRow rowMonth in myDS.Tables[0].Rows)
{
string ListedMonthYear = (string)rowMonth[0];
dates.Add(ListedMonthYear);
}返回值为:
Apr-10
Mar-10
Feb-10
Jan-10
Dec-09
Nov-09
Oct-09我感兴趣的是将这些值分成两个列表,以便在将来对它们执行操作。
Apr | 2010
Mar | 2010
Feb | 2010
Jan | 2010
Dec | 2009
Nov | 2009
Oct | 2009最好的方法是什么?
编辑: rowMonth只是包含所有与日期相关的值的数据行--月份-年、月开始、月结束、月活动或非活动。基本上,我只是尝试提取第一列的月份-年来执行操作,而忽略其余的列。
发布于 2010-08-18 23:59:09
您可以使用LINQ:
var months = (from item in dates
select item.Substring(0, 3))
.ToList();
var years = (from item in dates
select 2000 + int.Parse(item.Substring(4, 2)))
.ToList();您可能更喜欢将这两个部分分别存储在同一列表中:
var result = (from item in dates
select Tuple.Create(item.Substring(0, 3),
2000 + int.Parse(item.Substring(4, 2))))
.ToList();发布于 2010-08-19 00:01:32
这样,您就不需要对列表进行两次迭代。但它只适用于2k年或更高的年份,我假设您希望年份作为整数列表。
List<string> months = new List<string>();
List<int> years = new List<int>();
dates.ForEach(s =>
{
months.Add(s.Substring(0, 3));
years.Add(2000 + int.Parse(s.Substring(4, 2)));
});发布于 2010-08-18 23:59:31
如果您的日期在2000年之后,您可以执行以下操作:
dates.Select(d => d.Split('-')).Select(parts => new { Month = parts[0], Year = "20"+parts[0]})https://stackoverflow.com/questions/3514030
复制相似问题