【发布时间】:2016-05-25 03:05:33
【问题描述】:
我在每个UserId 上运行foreach 循环,但由于某种原因...在我的xml 中,只有一个userId 与所有@987654325 的所有开始时间和结束时间一起显示@。我需要它分别为每个userId 显示start 和end 时间。
所以它看起来像这样:
User2
Start
End
Start
End
Start
End
它需要看起来像这样:
User1
Start
End
Start
End
User2
Start
End
我的代码:
foreach (String userId in request.Users) // request.Users is a Array of UserId's
{
List<UserModel> result = // I am making my DataAccess Layer call here.
UserRecord record = new UserRecord();
record.UserId = userId;
record.TimePeriodList = new List<TimePeriod>();
for (int i = 0; i < result.Count; i += 2)
{
TimePeriod timeData = new TimePeriod();
timeData.StartTime = result[i].TimeDate;
// if result count is an odd number and this is the last iteration for the UserId
if (((result.Count & 1) == 1) && (i == result.Count))
{
timeData.EndTime = result[i + 1].TimeDate;
}
record.TimePeriodList.Add(timeData);
}
response.UserRecordList = new List<UserRecord>();
response.UserRecordList.Add(record);
}
public class GetUserResponse
{
private List<UserRecord> userRecordList;
public List<UserRecord> UserRecordList
{
get { return userRecordList; }
set { userRecordList = value; }
}
}
public class UserRecord
{
private string userId;
private List<TimePeriod> timePeriodList;
public string UserId
{
get { return userId; }
set { userId = value; }
}
public List<TimePeriod> TimePeriodList
{
get { return timePeriodList; }
set { timePeriodList = value; }
}
}
public class TimePeriod
{
private DateTime startTime;
private DateTime endTime;
public DateTime StartTime
{
get { return startTime; }
set { startTime = value; }
}
public DateTime EndTime
{
get { return endTime; }
set { endTime = value; }
}
}
我从DataAccess 层返回的数据如下所示:
UserId Time EventType
Test1 xx-xx-xxxx Start
Test1 xx-xx-xxxx End
Test2 xx-xx-xxxx Start
因此,如果存在奇数,则该 User 的结束时间默认为 DateTime.MinValue。
【问题讨论】:
标签: c# list loops for-loop arraylist