【发布时间】:2013-03-07 15:28:29
【问题描述】:
过去几个小时我一直被这个问题困扰,希望您能帮助我。
我有一个包含数据的列表(请参阅类:allItems),但我想拆分数据,因此类项包含所有数据,而公共列表包含子项。
在这个 sn-p 中发生的情况是,在 for 循环期间,项目会以相同的值添加到天数列表中,这就是我很难尝试将正确数量的条目添加到天数列表中的地方同一周数多次出现在 allStats 列表中。
任何帮助将不胜感激,谢谢。
public class allItems
{
public DateTime PunchInDate { get; set; }
public DateTime PunchOutDate { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public int WeekNumber { get; set; }
public int MonthNumber { get; set; }
public bool PunchedInLate { get; set; }
public bool PunchedOutLate { get; set; }
}
public class items
{
public int WeekNumber { get; set; }
public int MonthNumber { get; set; }
public List<subItems> Days { get; set; }
}
public class subItems
{
public bool PunchedInLate { get; set; }
public bool PunchedOutLate { get; set; }
public DateTime PunchInDate { get; set; }
public DateTime PunchOutDate { get; set; }
public DayOfWeek DayOfWeek { get; set; }
}
protected int getNumberOfWeeks(List<allItems> list, int numberToFind)
{
List<allItems> results = list.FindAll(
delegate(allItems ai)
{
return ai.WeekNumber == numberToFind;
}
);
return results.Count;
}
public List<items> getStats(string userId, string type)
{
List<allItems> allStats = getAllStats(userId, "week");
List<items> stats = new List<items>();
foreach (allItems allItem in allStats)
{
items item = new items();
subItems subItem = new subItems();
List<subItems> Days = new List<subItems>();
item.MonthNumber = allItem.MonthNumber;
item.WeekNumber = allItem.WeekNumber;
item.Days = Days;
int numberOfWeeks = getNumberOfWeeks(allStats, allItem.WeekNumber);
for (int i = 0; i < numberOfWeeks; i++)
{
subItem.DayOfWeek = allItem.DayOfWeek;
subItem.PunchedInLate = allItem.PunchedInLate;
subItem.PunchedOutLate = allItem.PunchedOutLate;
subItem.punchInDate = allItem.PunchInDate;
subItem.PunchOutDate = allItem.PunchOutDate;
Days.Add(subItem);
}
items result = stats.Find(week => week.WeekNumber == allItem.WeekNumber);
if (result == null)
{
stats.Add(item);
}
}
return stats;
}
【问题讨论】:
-
请使用
C#命名约定。属性名称应为ProperCased(即PunchInDate而不是punchInDate)。你的代码看起来像 java,这伤害了我的眼睛(和胃) -
将记住这一点以供将来参考,谢谢。
-
@highcore 我们需要找个时间喝一杯;我有一种感觉,我们要么相处得很好,要么打架。 :)
-
@JerKimball 这真的很难。我住在布宜诺斯艾利斯 =)