加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 迭代行时获取下一行的值

发布时间:2020-12-15 23:33:46 所属栏目:百科 来源:网络整理
导读:myClass结构: public class myClass { public string Name { get; set; } public string AdditionalData { get; set; } public System.DateTime ActivityTime { get; set; } } 我有一个上面的类列表,所有按活动时间排序说’行为’. 我希望将我的数据转换为
myClass结构:

public class myClass
    {
        public string Name { get; set; }
        public string AdditionalData { get; set; }
        public System.DateTime ActivityTime { get; set; }
    }

我有一个上面的类列表,所有按活动时间排序说’行为’.

我希望将我的数据转换为以下类的列表..

public class newClass
    {
        public string Name { get; set; }
        public string AdditionalData { get; set; }
        public System.DateTime StartTime { get; set; }
    public System.DateTime EndTime { get; set; }
    }

这里的StartTime与prev class的ActivityTime具有相同的值,所以我没有问题.
但是EndTime应该具有下一个列表对象的ActivityTime值,这个我无法弄清楚如何获取..
最后一个列表对象的EndTime可以与starttime相同

所以我的代码是……

List<newClass> items = new List<newClass>();
foreach (var item in acts)
{

            newClass si = new newClass
                        {
                            Name=item.Name,AdditionalData=item.AdditionalData,StartTime = item.ActivityTime,EndTime = //what do I do here??????

                        };
                        items.Add(si);

}

任何帮助都是真诚的感谢

解决方法

我有一个比for循环更优雅的解决方案:

List<newClass> output = acts.Select((a,index) => new newClass()
        {
            Name = a.Name,AdditionalData = a.AdditionalData,StartTime = a.ActivityTime,EndTime = (index + 1 < acts.Count) ? acts[index + 1].ActivityTime : default(DateTime)
        }).ToList();

或者您可以使用for循环而不是foreach:

List<newClass> items = new List<newClass>();
// assuming length > 0
int length = (acts.Length  % 2 == 0) ? acts.Length : acts.Length - 1;
for (int i = 0; i < acts.Length; i++)
{
    newClass si = new newClass
    {
        Name=acts[i].Name,AdditionalData=acts[i].AdditionalData,StartTime = acts[i].ActivityTime,EndTime = acts[i+1].ActivityTime
    };
    items.Add(si);  
}

if (length < acts.Length)
  // handle the last element as you wish

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读